进程池:
  每一个进程在启动一个子进程时都会克隆一分数据,并开启额外一份内存空间,如果多次开启子进程,对内存的开销比较大,这里可以通过进程池来控制进程的最大个数,来解决。
 
进程池中有两个方法:
  • apply #串行
  • apply_async #并行
回调callback:
  可以启动10台机器批量进行数据库备份,每个进程执行完毕后在数据库内写入一条日志,可以使用回调写入,回调是由主进程执行的,所以只进行一次链接就可以并发帮子进程写入日志,而不需要进行重复的链接。
# windows下的多进程参数
# from multiprocessing import freeze_support
from multiprocessing import Pool
import time,os def Foo(i):
time.sleep(2)
print("in process",os.getpid())
return i+100 def Bar(arg):
print('-->exec done:',arg,os.getpid()) # 判断是直接执行这个脚本,就成立
# 如果是其他文件调用这个脚本就不执行
if __name__ == '__main__': # 允许进程池同时放入吴哥进程
# cpu只会计算这5个,其他进程处于挂起状态
pool = Pool(processes=5) for i in range(10): # 并行执行程序
# callback=回调 执行玩func在回掉callback
# 主进程进行回调
pool.apply_async(func=Foo, args=(i,),callback=Bar) # 串行执行进程
#pool.apply(func=Foo, args=(i,)) print('end') # 关闭pool
pool.close() # 注:并行执行时,先close在join。
# 进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。
pool.join()
 

最新文章

  1. Linq之旅:Linq入门详解(Linq to Objects)
  2. php封装微信SDK
  3. MVVM
  4. 使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果
  5. DevExpress BarManager 部分用法
  6. 用mysqlslap压测mysql
  7. Bulk Insert 高效快速插入数据
  8. Keep Mind Working
  9. H3C虚拟化之IRF
  10. MinerHtmlThread.java 爬取页面线程
  11. 触发器中的after与before理解
  12. tableView中cell的复用机制
  13. 常用.bat
  14. shell升级
  15. Intersection(Check)
  16. sharepoint 2013工具
  17. flex 的总结
  18. vue基础知识之vue-resource/axios
  19. Oracle 触发器(一)
  20. django自定义模板和过滤器

热门文章

  1. java基础---->String中的split方法的原理
  2. Golang, 以 9 个简短代码片段,弄懂 defer 的使用特点
  3. Java课程寒假之开发记账本软件(网页版)之四
  4. PHP中递归的实现(附例子)
  5. Apache hardoop 的基础知识学习总结
  6. IniHelper
  7. favorite learning link
  8. Open_stack 有虚拟机端口不通的问题
  9. 家庭记账本之微信小程序(六)
  10. MD5在线加密的应用