Python 2.7缺少
starmapPython
3.3+中的合并方法。您可以通过使用包装器装饰目标函数来克服此问题,该包装器将对参数元组进行解包并调用目标函数:
import osfrom multiprocessing import Poolimport randomfrom functools import wrapsdef unpack(func): @wraps(func) def wrapper(arg_tuple): return func(*arg_tuple) return wrapper@unpackdef write_on_files(a, seed): random.seed(seed) print("%d opening file %s" % (os.getpid(), a)) # simulate for _ in range(10): j = random.randint(0, 10) print("%d writing %d to file %s" % (os.getpid(), j, a)) # simulateif __name__ == '__main__': folder = ["Test/%d.csv" % i for i in range(0, 4)] seed = [234124, 663123, 12345, 123833] arguments = zip(folder, seed) pool = Pool(4) pool.map(write_on_files, iterable=arguments) pool.close() pool.join()


