Python实现并行备忘

先把工作写成单参数函数func,然后调用multiprocessing.Pool,设置计算使用的核心数,通过map将参数分配给func进行计算,简单实现如下。

from multiprocessing import Pool

def func(parameter):
    ...

pool = Pool(4)  # set the pool size to 4
pool.map(func, parameter)
pool.close()
pool.join()

上述代码使用4个核心进行计算,运行后用top查看进程可以看到四个相同的Python进程,单个进程CPU占用率最高100%。这种多进程实现适用于CPU密集型工作。

多参数函数的并行需要对参数做进一步封装,可以参见https://www.rawidn.com/posts/Python-multiprocessing-for-multiple-arguments.html

对于IO密集型工作可以调用multiprocessing的子库dummy实现,导入部分如下,其他代码不变。

from multiprocessing.dummy import Pool

运行时只有一个Python进程,但其CPU占用率可以超过100%。

更详细的说明可以参见https://segmentfault.com/a/1190000000414339

此外,还可以通过Parallel Python模块实现,但目前还没具体测试,其使用可以看见http://wiki.jikexueyuan.com/project/python-actual-combat/tutorial-25.html

猜你喜欢

转载自my.oschina.net/u/1037903/blog/1559999
今日推荐