|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wcq15759797758 于 2021-7-25 16:12 编辑
一.单进程单线程
- import time
- def work(n):
- print(f'{n}打电话')
- time.sleep(2)
- print(f'{n}电话结束')
- uesrlist = ['刘德华','张学友','梁朝伟']
- for i in uesrlist:
- work(i)
复制代码
二.多进程
- from multiprocessing import Process
- import time,os
- uesrlist = ['刘德华','张学友','梁朝伟']
- def work(n):
- print(f'{n}打电话,进程号为:{os.getpid()}')
- time.sleep(2)
- print(f'{n}电话结束,进程号为:{os.getpid()}')
- def pol():
- plist = []
- for item in uesrlist:
- #循环创建进程 target 当前要执行的函数
- p = Process(target=work,args=(item,))
- #启动进程
- p.start()
- #把进程加入到列表当中
- plist.append(p)
- #阻塞终止进程的执行
- [i.join() for i in plist]
- if __name__ == '__main__':
- pol()
复制代码
三.多线程
- import time ,os
- import threading
- uesrlist = ['刘德华','张学友','梁朝伟']
- def work(n):
- print(f'{n}打电话,进程号为:{os.getpid()},线程号为:{threading.current_thread()}')
- time.sleep(2)
- print(f'{n}电话结束,进程号为:{os.getpid()},线程号为:{threading.current_thread()}')
- def pol():
- plist = []
- for item in uesrlist:
- #循环创建线程 target 当前要执行的函数
- p = threading.Thread(target=work,args=(item,))
- #生成线程
- p.start()
- #把进程加入到列表当中
- plist.append(p)
- #阻塞终止线程的执行
- [i.join() for i in plist]
- if __name__ == '__main__':
- pol()
复制代码
四.线程池
- import time
- import threading
- from concurrent.futures import ThreadPoolExecutor
- uesrlist = ['刘德华','张学友','梁朝伟','周杰伦','苏炳添']
- def work(n):
- print(f'{n}打电话,线程号为:{threading.current_thread()}')
- time.sleep(2)
- print(f'{n}电话结束,线程号为:{threading.current_thread()}')
- def pol():
- # 1 . 创建线程池
- pool = ThreadPoolExecutor(max_workers=3)
- # 2 . 循环指派任务 和 参数
- [pool.submit(work,user) for user in uesrlist]
- # 3 . 关闭线程池
- pool.shutdown
- if __name__ == '__main__':
- pol()
复制代码 |
|