gpt4 book ai didi

python - 在 Python 中实现并行 for 循环

转载 作者:太空狗 更新时间:2023-10-30 02:53:50 26 4
gpt4 key购买 nike

我有一个如下所示的 Python 程序:

total_error = []
for i in range(24):
error = some_function_call(parameters1, parameters2)
total_error += error

函数“some_function_call”需要很多时间,我找不到降低函数时间复杂度的简单方法。有没有办法在执行并行任务时仍然减少执行时间,然后将它们加到 total_error 中。我尝试使用 pool 和 joblib,但都无法成功使用。

最佳答案

您还可以使用 concurrent.futures在 Python 3 中,这是一个比 multiprocessing 更简单的接口(interface). See this有关差异的更多详细信息。

from concurrent import futures

total_error = 0

with futures.ProcessPoolExecutor() as pool:
for error in pool.map(some_function_call, parameters1, parameters2):
total_error += error

在这种情况下,parameters1parameters2应该是一个列表或可迭代的,其大小与您要运行该函数的次数相同(根据您的示例为 24 次)。

如果paramters<1,2>不是可迭代/可映射的,但您只想运行该函数 24 次,您可以提交该函数的作业达到所需的次数,然后使用回调获取结果。

class TotalError:
def __init__(self):
self.value = 0

def __call__(self, r):
self.value += r.result()

total_error = TotalError()
with futures.ProcessPoolExecutor() as pool:
for i in range(24):
future_result = pool.submit(some_function_call, parameters1, parameters2)
future_result.add_done_callback(total_error)

print(total_error.value)

关于python - 在 Python 中实现并行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082264/

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