在做大量数据的处理时,经常会遇到速度慢的问题,这时候可以使用多进程来进行加速。python中的multiprocessing提供了跨平台的多进程模块,这里使用其中的pool(进程池)来尝试。
from multiprocessing import Pool
def run(data):
# do something
return data
processor = 8
res = []
p = Pool(processor)
for i in range(processor):
res.append(p.apply_async(run, args=(data)))
p.close()
p.join()
output = []
for i in res: # 将子进程的处理结果重组
output.append(i)
print(output)
Pool由于会复制整个父进程的资源,速度偏慢。实践中可以进一步选用process模块,有机会再补充。
参考:
https://blog.youkuaiyun.com/bryan__/article/details/78786648