我有一个像这样的循环:
df = []
for i in range(50):
if i <= 10:
df.append(i)
else:
df.append(i+1000)
我想通过Multiprocessing来运行它,类似这样(这不起作用):
df = []
items = range(50)
def try_my_operation(item):
if i <= 10:
df.append(i)
else:
df.append(i+1000)
executor = concurrent.futures.ProcessPoolExecutor(10)
futures = [executor.submit(try_my_operation, item) for item in items]
concurrent.futures.wait(futures)
有人可以帮我吗?非常感谢!
答案 0 :(得分:0)
使用多个进程执行代码的一种简单方法是使用multiprocessing.Pool
建立一个工作池(根据计算机上可用的CPU内核数),然后map
您的{ {1}}转到您要调用的函数:
items
输出:
import multiprocessing as mp
def try_my_operation(i):
if i <= 10:
return i
else:
return i + 1000
if __name__ == "__main__":
items = range(50)
with mp.Pool(processes=4) as pool:
df = pool.map(try_my_operation, items)
print(df)
请注意,为了避免并行进程之间共享状态的复杂性,我将函数更改为返回值,而不是附加到全局列表。