匿名用户

1级

2016-10-26 回答

在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,10几个还好,但如果是上百个,上千个目标,手动的去限制进程数量却又太过繁琐,这时候进程池Pool发挥作用的时候就到了。

Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来它。这里有一个简单的例子:

#!/usr/bin/env python

#coding=utf-8

"""

Author: Squall

Last modified: 2011-10-18 16:50

Filename: pool.py

Description: a simple sample for pool class

"""

from multiprocessing import Pool

from time import sleep

def f(x):

for i in range(10):

print '%s --- %s ' % (i, x)

sleep(1)

def main():

pool = Pool(processes=3) # set the processes max number 3

for i in range(11,20):

result = pool.apply_async(f, (i,))

pool.close()

pool.join()

if result.successful():

print 'successful'

if __name__ == "__main__":

main()

先创建容量为3的进程池,然后将f(i)依次传递给它,运行脚本后利用ps aux | grep pool.py查看进程情况,会发现最多只会有三个进程执行。pool.apply_async()用来向进程池提交目标请求,pool.join()是用来等待进程池中的worker进程执行完毕,防止主进程在worker进程结束前结束。但必pool.join()必须使用在pool.close()或者pool.terminate()之后。其中close()跟terminate()的区别在于close()会等待池中的worker进程执行结束再关闭pool,而terminate()则是直接关闭。result.successful()表示整个调用执行的状态,如果还有worker没有执行完,则会抛出AssertionError异常。

利用multiprocessing下的Pool可以很方便的同时自动处理几百或者上千个并行操作,脚本的复杂性也大大降低。

win python 判断 所有 子进程 结束_python 多进程 进程池子进程结束怎么获取相关推荐

  1. win python 判断 所有 子进程 结束_python 多进程如何终止或重启子进程?

    这里有个完整的实例 MD5值重复文件多进程检查工具 测试过程中经常发现MD5值相同的图片.之前没有用并发,检查过程经常需要一个小时,现在改成多进程.一般3分钟以内可以完成处理(48核). 此模式也是自 ...

  2. python判断素数的函数_Python素数prime函数练习_Python源码实操

    Python素数prime函数练习_Python源码实操 素数prime函数练习 1) 写一个函数isprime(x) 判断x是否为素数,如果是素数,返回True,否则返回False def ispr ...

  3. python进程池调用实例方法_Python 多进程并发操作中进程池Pool的实例

    在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...

  4. python多进程间通信_Python 多进程编程之 进程间的通信(Queue)

    Python 多进程编程之 进程间的通信(Queue) 1,进程间通信 Process有时是需要通信的,操作系统提供了很多机制来实现进程之间的通信,而Queue就是其中的一个方法 ----这是操作系统 ...

  5. python判断是不是文件夹_Python判断文件和文件夹是否存在的方法

    一.python判断文件和文件夹是否存在.创建文件夹 复制代码代码如下: >>> import os >>> os.path.exists("d:/ass ...

  6. python判断今天周几_Python如何根据日期判断周几

    python作为现在很流行的一门语言,学好python是很有必要的,下面是根据日期判断周几的个人总结的一些方法,可供参考. Python如何根据日期判断周几 Python判断周几主要使用了time, ...

  7. python判断密码是否正确_python密码判断是否符合要求的方法

    python中可以使用正则表达式来判断密码字符串是否符合要求.Python的re 模块提供字符正则匹配检查,功能强大,写法高效简洁,因此在工作中会被经常使用. python判断密码是否符合要求示例: ...

  8. python判断正负的函数_python判断正负数方式

    我就废话不多说了,大家还是直接看代码吧! a1 = raw_input("please input a number") a = int(a1) if(a!=0): if(a &g ...

  9. python判断字符类型编程_python判断字符类型怎么做

    设str为字符串 str.isalnum() 所有字符都是数字或字母(推荐学习:Python视频教程) str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 st ...

最新文章

  1. xp 5gt ***
  2. [Shell 脚本] 备份数据库文件至OSS服务(纯shell脚本无sdk)
  3. 软定时器的启动与停止
  4. boost::type_erasure::equality_comparable相关的测试程序
  5. 政府安全资讯精选 2017年第十八期 工信部近三年将466个“问题APP”纳入黑名单;阿里云成为全球唯一完成德国C5云安全基础附加标准审计云服务商...
  6. [30期] 第一个项目总结-—数码黑店在这一年开张
  7. java ajax动态加载数据_java实现的highcharts与ajax结合动态实时获取数据更新图表
  8. php 电梯程序设计,西门子300PLC编写三层电梯程序的设计与模拟
  9. 【华为机试真题 JAVA】最大股票收益-100
  10. hping3对某网站发起ddos攻击
  11. Linux下基于Openstack安装部署私有云
  12. vs2013调试技巧及快捷键
  13. opencv 二维码定位
  14. 点击图片显示图片放大的弹窗
  15. 快速拷贝文件经验及工具分享 - 天缘博客
  16. FPGA基于XDMA实现PCIE X4通信方案 提供工程源码和QT上位机程序和技术支持
  17. 英语四级题目:做的时间分配
  18. linux tar包分隔 tar split
  19. Halcon创建模板并进行模板匹配
  20. 【MySQL】实验五 子查询

热门文章

  1. Matlab 2017a笔记
  2. django models 文件夹
  3. android图片缩小和放大Matrix
  4. docker 容器中不支持中文的解决方法
  5. Heron 数据模型,API和组件介绍
  6. crm采用soap删除记录
  7. 谷歌在外贸中的实战解析
  8. 分布式计算框架Hadoop
  9. rman备份rman-00554 ,rman-04005错误
  10. 简要概述html5的设计宗旨,HTML5程序设计(第2版) 第一章:HTML5概述.doc