gpt4 book ai didi

python - 使用 python : saving objects of the "pooled" functions 进行多处理

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:34 25 4
gpt4 key购买 nike

只是想知道一种方法来保存从我在多进程环境(python 3.5)中池化的函数中产生的对象。

池化代码(一个简单的例子):

import numpy as np

vct_list = [0, 1]

def f_to_pool(vector_list):
chosen_nmb = np.random.choice(vector_list)
status_ = True if chosen_nmb == 0 else False
return chosen_nmb * 4, status_

scenarios = range(100)

numbers_processed = []
all_status = []

for _ in scenarios:
nmb_processed, status = f_to_pool(vct_list)
numbers_processed.append(nmb_processed)
all_status.append(status)

而多处理框架是multiprocessing.Pool:

pool = multiprocessing.Pool(nmb_of_proc)
results = pool.map(function, objects)
pool.close()

问题是,即使我可以异步运行并收集文档中所示的结果(https://docs.python.org/3.5/library/multiprocessing.html#using-a-pool-of-workers),该过程将保持不变,并且因为我正在使用这种技术来扩展我的计算能力(这不是 I/O 问题),那对我没有用。

有什么建议吗?

最佳答案

您的研究是正确的,您可以将两者结合起来:

import multiprocessing

def your_time_consuming_function(i):
status = bool(i % 2)
return i * 4, status

def run(scenarios_list):
with multiprocessing.Pool(4) as pool:
return pool.map(your_time_consuming_function, scenarios_list)

scenarios = range(8)

print(run(scenarios))

然后会产生这样的结果:

[(0, False), (4, True), (8, False), (12, True), (16, False), (20, True), (24, False), (28, True)]

关于python - 使用 python : saving objects of the "pooled" functions 进行多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54182473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com