python 多进程 实例
multiprocessing — 基于进程的并行 (官方文档)
https://docs.python.org/zh-cn/3/library/multiprocessing.html
为了使用更多的进程 通常使用Pool
通常使用Pool中map方法 但是只能返回一个变量
如果需要返回多个变量 先用一个字典保存多个变量 再返回该字典
一个简单的实例
from multiprocessing import Pool
def f(x):
return x**2
def f1(x, y):
return x*y
def f2(x):
y1 = x**2
y2 = x**3
res = dict(y1=y1, y2=y2)
return res
if __name__ == '__main__':
with Pool() as p:
print(p.map(f, [2, 3, 4]))
print(p.starmap(f1, [[1, 2], [3, 4]])) # 比如可迭代对象 [(1,2), (3, 4)] 会转化为等价于 [func(1,2), func(3,4)] 的调用。
data = p.map(f2, [2, 3, 4])
y1 = []
y2 = []
for i in range(len(data)):
y1.append(data[i]['y1'])
y2.append(data[i]['y2'])
print(y1)
print(y2)