在 Python multiprocessing
库中,是否有支持多个参数的 pool.map
的变体?
import multiprocessing
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()
原文由 user642897 发布,翻译遵循 CC BY-SA 4.0 许可协议
答案取决于版本和情况。 JF Sebastian 在下面首先描述了最新版本的 Python(自 3.3 起)的最一般答案。 1它使用
Pool.starmap
方法,该方法接受参数元组序列。然后它会自动解压每个元组的参数并将它们传递给给定的函数:对于早期版本的 Python,您需要编写一个辅助函数来显式解压缩参数。如果你想使用
with
,你还需要编写一个包装器来将Pool
变成上下文管理器。 (感谢 muon 指出了这一点。)在更简单的情况下,使用固定的第二个参数,您还可以使用
partial
,但仅限于 Python 2.7+。1. 其中大部分是受到他的回答的启发,他的回答可能应该被接受。但由于这个卡在顶部,似乎最好为未来的读者改进它。