码迷,mamicode.com
首页 > 编程语言 > 详细

Python中multiprocessing.Pool运行带多个参数的函数

时间:2019-11-01 12:55:17      阅读:825      评论:0      收藏:0      [点我收藏+]

标签:from   pytho   变量   class   多个   map函数   tool   不同   https   

在python中经常会到用多线程处理某个函数来缩短运行时间,但通常multiprocessing.Pool的map函数只接受一个可迭代参数。

from multiprocessing import Pool

def work(x):
    return x+1
pool = Pool(processes=4) # 4个线程
x = [1,2,3,4,5,6]
results = pool.map(work, x)
print results

运行上面的程序就会多线程处理并打印出输入x的计算结果。

但是这个函数仅允许函数的输入变量为1,如果函数需要多个参数输入,那个就无法用上面的程序。比如:

def work(x, y):
    return x + y

当附加参数y为固定参数时,一种比较有效的方法是,用partial函数提取主要的一个参数固定其他参数。

比如,我们想用x去加一个固定值,那么我们就认为x是主要参数,固定y:

from functools import partial

partial_work = partial(work, y=1) # 提取x作为partial函数的输入变量
results = pool.map(partial_work, x)

 

总结:当函数的参数在不同时候的输入均不同,那么这种方法不太合适,可参考 https://www.cnblogs.com/arkenstone/p/6830714.html 的方法2和方法3。

 

Python中multiprocessing.Pool运行带多个参数的函数

标签:from   pytho   变量   class   多个   map函数   tool   不同   https   

原文地址:https://www.cnblogs.com/AliceYing/p/11776060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!