Python进程池,线程池,协程池
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python进程池,线程池,协程池,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1811字,纯文字阅读大概需要3分钟。
内容图文
![Python进程池,线程池,协程池](/upload/InfoBanner/zyjiaocheng/924/a647642a8b5545ad8094512022b435ff.jpg)
线程池
import threadingimport timedef myThread(): for i in range(10): time.sleep() print('d')sep=threading.Semaphore(1)threadlist=[]for name in ["a","b"]: mythd=threading.Thread(target=myThread,args=(name,)) mythd.start() threadlist.append(myThread)for thread in threadlist: thread.join()
进程池
import multiprocessingimport timeimport osdef getdata(data): print('start') time.sleep(2) print(os.getpid()) return data**dataif __name__=="__main__": mylist=[x for x in range(100)] pool=multiprocessing.Pool(processes=4) pool_outputs=pool.map(getdata,mylist) pool.close() pool.join() print(pool_outputs)
进程池
from multiprocessing import Barrierimport multiprocessingimport timeimport osdef getdata(data): with myBarrier: print('start') time.sleep(2) print(os.getpid(),data) if __name__=="__main__": myBarrier=multiprocessing.Barrier(3) mylist=[x for x in range(100)] processeslist=[] for data in mylist: pr=multiprocessing.Process(target=getdata,args(data,myBarrier)) processeslist.append(pr) pr.start() for pr in processeslist: print('n') pr.join()
协程池
import geventimport gevent.poolimport gevent.monkey gevent.monkey.patch_all()#分布式冲突def run_task(data): print(data)if __name__=="__main__": mypool=gevent.pool.Pool(2) datalist=[x for x in range(10)] result=mypool.map(run_task,datalist) print(result)
使用异步进程池,且进程池中传递入的任务是方法,
import osfrom multiprocessing import Pooldef run_process(fun): fun()def one_process(): print("执行")if __name__ == '__main__': print('parent process %s.' % os.getpid()) p = Pool() # 初始化进程池 for i in range(5): p.apply_async(run_process, args=(one_process,)) # 追加任务 apply_async 是异步非阻塞的,就是不用等待当前进程执行完毕,随时根据系统调度来进行进程切换。 p.close() p.join() # 等待所有结果执行完毕,会等待所有子进程执行完毕,调用join()之前必须先调用close()
内容总结
以上是互联网集市为您收集整理的Python进程池,线程池,协程池全部内容,希望文章能够帮你解决Python进程池,线程池,协程池所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。