python多进程multiprocessing的简单使用

时间:2022-05-01 04:06:17

1. 使用Process方法

使用Process方法,手动启动一个进程。

# -*- coding: utf-8 -*-
import multiprocessing

def task(num):
print 'run here'
return num ** 2

if __name__ == "__main__":
processes = 5 # 需要启动的进程个数
jobs = []
for _ in range(processes):
p = multiprocessing.Process(target = task, args=(2,))
jobs.append(p)

[p.start() for p in jobs]
[p.join() for p in jobs]

这里multiprocessing.Process执行一次启动一个进程。使用start(),join()方法控制进程的开始与结束。
这样启动多进程任务有一点比较麻烦,获取每个进程中的任务的返回值,也就是target参数对应的函数的返回值比较麻烦,解决方法是可以使用一个全局变量来保存每个人物的返回值。
还有一个比较简便的方法就是使用multiprocessing中的map()方法。

2. 使用map方法

# -*- coding: utf-8 -*-
import multiprocessing

def task(num):
print 'run here'
return num ** 2

if __name__ == "__main__":
processes = 5 # 需要启动的进程个数

pool = multiprocessing.Pool()
result = pool.map(task, [2 for i in range(processes)])
print result

这样,每个task的结果都保存在result变量中。