python多进程&多线程
python多进程&多线程
1.多进程定义
2.多线程
3.应用
3.1不使用多线程则顺序执行

1 import logging 2 from threading import Thread 3 from time import sleep, ctime 4 5 logging.basicConfig(level=logging.INFO) 6 7 8 def loop0(): 9 logging.info("start loop0 at " + ctime()) 10 sleep(4) 11 logging.info("end loop0 at " + ctime()) 12 13 14 def loop1(): 15 logging.info("start loop0 at " + ctime()) 16 sleep(2) 17 logging.info("end loop0 at " + ctime()) 18 19 20 def main(): 21 logging.info("start all at " + ctime()) 22 loop0() 23 loop1() 24 logging.info("end all at " + ctime()) 25 26 if __name__ == '__main__': 27 main()
_thread没有守护线程的概念

import _thread import logging from threading import Thread from time import sleep, ctime logging.basicConfig(level=logging.INFO) # def loop0(): # logging.info("start loop0 at " + ctime()) # sleep(4) # logging.info("end loop0 at " + ctime()) # # # def loop1(): # logging.info("start loop1 at " + ctime()) # sleep(2) # logging.info("end loop1 at " + ctime()) loops = [2, 4] def loop(nloop, nsec, lock): ''' :param nloop标记当前属于第几个loop :param nsec 睡眠几秒 :param lock 加锁默认已加锁, ''' logging.info("start loop1 at " + str(nloop) + ctime()) sleep(nsec) logging.info("end loop1 at " + str(nloop) + ctime()) lock.release() def main(): logging.info("start all at " + ctime()) locks = [] ##存储所有的锁 nloops =range(len(loops)) ##所有循环函数个数 # for i in nloops: # print(i) for i in nloops: lock = _thread.allocate_lock() # 申明新的锁 lock.acquire() # 加锁操作 locks.append(lock) # locks获取了所有的锁 # 此步骤是依次生成所有的锁 for i in nloops: print(i) print(loops) print(loops[i]) # 开启子线程 _thread.start_new_thread(loop, (i, loops[i], locks[i])) # i=nloop,loops[i]=nsec,lock[i]=lock for i in nloops: # 依次判断锁是否解锁 while locks[i].locked(): pass logging.info("end all at " + ctime()) if __name__ == '__main__': main()

import logging import threading from time import sleep, ctime logging.basicConfig(level=logging.INFO) # def loop0(): # logging.info("start loop0 at " + ctime()) # sleep(4) # logging.info("end loop0 at " + ctime()) # # # def loop1(): # logging.info("start loop1 at " + ctime()) # sleep(2) # logging.info("end loop1 at " + ctime()) loops = [6, 2] def loop(nloop, nsec): ''' :param nloop标记当前属于第几个loop :param nsec 睡眠几秒 :param lock 加锁默认已加锁, ''' logging.info("start loop" + str(nloop) + " at " + ctime()) sleep(nsec) logging.info("end loop" + str(nloop) + ' at ' + ctime()) def main(): logging.info("start all at " + ctime()) nloops = range(len(loops)) ##所有循环函数个数 thread_list = [] for i in nloops: t = threading.Thread(target=loop, args=(i, loops[i])) thread_list.append(t) for i in nloops: # 依次判断锁是否解锁 thread_list[i].start() for i in nloops: thread_list[i].join() logging.info("end end###### at " + ctime()) if __name__ == '__main__': main()

import logging import threading from time import sleep, ctime logging.basicConfig(level=logging.INFO) loops = [6, 2] class MyTread(threading.Thread): def __init__(self, func, args, name=''): threading.Thread.__init__(self) self.func = func self.args=args self.name = name def run(self): self.func(*self.args) def loop(nloop, nsec): ''' :param nloop标记当前属于第几个loop :param nsec 睡眠几秒 :param lock 加锁默认已加锁, ''' logging.info("start loop" + str(nloop) + " at " + ctime()) sleep(nsec) logging.info("end loop" + str(nloop) + ' at ' + ctime()) def main(): logging.info("start all at " + ctime()) nloops = range(len(loops)) ##所有循环函数个数 thread_list = [] for i in nloops: t = MyTread(loop, args=(i, loops[i]),name=loop.__name__) thread_list.append(t) for i in nloops: # 依次判断锁是否解锁 thread_list[i].start() for i in nloops: thread_list[i].join() logging.info("end end###### at " + ctime()) if __name__ == '__main__': main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界