博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python进程池Pool
阅读量:5869 次
发布时间:2019-06-19

本文共 970 字,大约阅读时间需要 3 分钟。

 

 

'''进程池,启动一个进程就要克隆一份数据,假设父进程1G,那么启动进程开销很大避免启动太多造成系统瘫痪,就有进程池,即同一时间允许的进程数量ps:线程没有池,因为线程启动开销小,线程有类似信号量来控制''''''windows上必须加语句:if __name__ == '__main__':    freeze_support()'''from multiprocessing import Pool,freeze_supportimport timeimport osdef Foo(i):    time.sleep(2)    # print(os.getpid())    return i+100def Bar(arg):    print("hello world",arg)    print(os.getpid())if __name__ == '__main__':    freeze_support()    pool = Pool(processes=5)  # 允许进程池里同时放入5个进程    print(os.getpid())    for i in range(10):  # 启动了但是还没被允许,因为同一时间只有5个在运行        # pool.apply_async(func=Foo, args=(i,)) # 并行        # pool.apply(func=Foo, args=(i,))  # 串行        pool.apply_async(func=Foo, args=(i,),callback=Bar) # 并行,并且当且仅当Foo执行完后再执行Bar        # 回调应用场景:批量备份完后,往数据库写日志,但是为啥不让子线程写,而让父进程写?因为父进程里写日志只连一次,子进程里每次都连    print('end')    pool.close()    pool.join() # 这里要先关闭再JOIN。进程池中进程执行完后再关闭,如果注释,那么程序直接关闭

 

posted on
2018-09-23 18:06 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/staff/p/9693300.html

你可能感兴趣的文章
struts中的xwork源码下载地址
查看>>
oracle报错pls-00103,在使用begin-end块的时候(动态SQL)
查看>>
Oracle chr() ascii()
查看>>
KDE 开发入门指导(KDE Development – A Beginner's Guide)
查看>>
可给pdf批量添加书签的神器
查看>>
CentOS Linux查询软件包的安装位置
查看>>
TFT LCD 7寸1024*600 FPGA点亮
查看>>
request.getInputStream()乱码处理方法
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
iOS中perform+@selector多参数传递
查看>>
Mysql列类型:日期时间型
查看>>
java 编程中的非空判断怎么加才优雅?
查看>>
zookeeper的原理及应用
查看>>
如何阅读一本书(记录)
查看>>
BGP选路方法
查看>>
2011年度十大杰出IT博客
查看>>
SAS硬盘指示灯状态对照表
查看>>
java并发编程系列阅读笔记
查看>>
Configuring Hive On Spark
查看>>
spring boot中实现响应图片的方法以及改进
查看>>