在Python多处理库中,pool.map是否有支持多个参数的变体?
text = "test"
def harvester(text, case):
X = case[0]
text+ str(X)
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=6)
case = RAW_dataset
pool.map(harvester(text,case),case, 1)
pool.close()
pool.join()
Tags:
答案取决于版本和情况。Python最新版本(自3.3以来)的最一般的答案首先在下面由J.F. Sebastian描述。1它使用^{} 方法,该方法接受一系列参数元组。然后,它会自动从每个元组中解包参数并将它们传递给给定的函数:
对于早期版本的Python,需要编写一个helper函数来显式地解压参数。如果要使用
with
,还需要编写一个包装器来将Pool
转换为上下文管理器。(感谢muon指出这一点。)在更简单的情况下,使用固定的第二个参数,也可以使用
partial
,但只能在Python 2.7+中使用。1。这其中很大一部分是受到他的答案的启发,而他的答案很可能应该被接受。不过,由于这本书一直排在第一位,因此最好能为将来的读者改进它。
Python 3.3包括^{} method :
对于旧版本:
输出
注意这里如何使用^{} 和^{} 。
由于the bug mentioned by @unutbu不能在Python 2.6上使用^{} 或类似的功能,因此应该显式定义简单包装函数} 。
func_star()
。另请参见the workaroundsuggested by ^{我想下面会更好
输出
相关问题 更多 >
编程相关推荐