python的并行计算

pool模块

pool类能够提供指定数量的进程,供用户调用。当有新的请求提交到pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,知道池中有进程结束,才会创建新的进程来执行这些请求。

  • apply()
    -该函数用于传递不定参数,同python中的apply函数一致,主进程会被阻塞知道函数执行结束。3.x之后不再出现

  • map()
    map(func, iterable[, chunksize=None])
    Pool类中的map方法,与内置的map函数用法基本一致,它会使得进程阻塞直到结果返回。注意:虽然第二个参数是一个迭代器,但再实际使用中,必须在整个队列都就绪后,程序才会运行子进程。

  • starmap()
    starmap( func, iterable, chunksize=None)
    使用起来像map方法。
    Like map() method but the elements of the iterable are expected to
    be iterables as well and will be unpacked as arguments. Hence
    func and (a, b) becomes func(a, b).

  • close()
    关闭进程池(pool),使其不再接受新的任务

  • join()
    主进程阻塞等待子进程的退出,join方法要在close或者terminate之后使用。

pool使用
from multiprocessing.pool import Pool
def double(i):
	return i*2
pool = Pool(processes=4)
result = pool.map(double, [1,2,3])
print(result)

Pool有一个processes参数,这个参数可以不设置,如果不设置函数会跟根据计算机的实际情况来决定要运行多少个进程
我们也可自己设置,但是要综合考虑自己计算机的处理器性能,一般可以设置为CPU核心数,可以自己建立一个试验脚本进行测试
注意:进程池pool对象定义放在main函数下,否则会报错

map()函数中,第一个参数是我们需要引用的函数,第二个参数是需要迭代的参数列表。
map()函数会自动将参数列表中的每一个数据作为参数传到第一个参数引用的函数中,得到最终结算结果,作为一个列表result输出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值