多个输入和输出,用什么并行化它?
Multiple inputs and outputs, parallelize it using what?
Pool.map()
只接受一个可迭代变量作为参数,这不是我的情况,我发现很难将它简化为一个可迭代变量。
mp.Process()
只允许我输出一个变量,这也不是我的情况,我的输出是在并行化中创建的 4 个地理数据框列表
我可以用什么函数(在 multiprocessing
中)并行化它?
您可以 zip
将多个 iterable 参数放在一起,然后调用 Pool.map
并将该结果作为单个 iterable 参数,在这种情况下,map
的 func 参数将是一个以 tuple
作为参数的函数,或者您可以调用 pool.starmap
在这种情况下,starmap
的 func 参数将是一个接受 n 个参数的函数。
这演示了两种技术:
from multiprocessing import Pool
def worker_1(t):
x, y, z = t # unpack
...
def worker_2(x, y, z):
...
if __name__ == '__main__':
pool = Pool()
results_1 = pool.map(worker_1, zip(range(1, 101), range(2, 102), range(3, 103)))
results_2 = pool.starmap(worker_2, zip(range(1, 101), range(2, 102), range(3, 103)))
Pool.map()
只接受一个可迭代变量作为参数,这不是我的情况,我发现很难将它简化为一个可迭代变量。
mp.Process()
只允许我输出一个变量,这也不是我的情况,我的输出是在并行化中创建的 4 个地理数据框列表
我可以用什么函数(在 multiprocessing
中)并行化它?
您可以 zip
将多个 iterable 参数放在一起,然后调用 Pool.map
并将该结果作为单个 iterable 参数,在这种情况下,map
的 func 参数将是一个以 tuple
作为参数的函数,或者您可以调用 pool.starmap
在这种情况下,starmap
的 func 参数将是一个接受 n 个参数的函数。
这演示了两种技术:
from multiprocessing import Pool
def worker_1(t):
x, y, z = t # unpack
...
def worker_2(x, y, z):
...
if __name__ == '__main__':
pool = Pool()
results_1 = pool.map(worker_1, zip(range(1, 101), range(2, 102), range(3, 103)))
results_2 = pool.starmap(worker_2, zip(range(1, 101), range(2, 102), range(3, 103)))