gpt4 book ai didi

python - Windows 上的 multiprocessing.Pool.apply_async

转载 作者:可可西里 更新时间:2023-11-01 14:18:37 25 4
gpt4 key购买 nike

我正在尝试使用池来并行分配一些子进程调用。如果我为池构建一个完整的可迭代对象并使用 imapmapimap_unordered 等,一切都很好,但我无法获得apply_async 开始工作。

例如,这可以正常工作:

from subprocess import check_call
from multiprocessing import Pool

def dispatch_call(file_name):
return check_call(...)

if __name__ == '__main__':
files = (constructed file list)
pool = Pool()
pool.imap(dispatch_call, files)
pool.close()
pool.join()

然而,这不会:

from subprocess import check_call
from multiprocessing import Pool

def dispatch_call(file_name):
return check_call(...)

if __name__ == '__main__':
files = (constructed file list)
pool = Pool()
for f in files:
pool.apply_async(dispatch_call, f)
pool.close()
pool.join()

我检查了 multiprocessing 的文档,Windows 特定问题似乎与此处无关。我只是运气不好,无法让它在 Windows 上运行吗?

最佳答案

您应该将回调参数作为序列(列表/元组)传递。

str 对象也是一个序列,但是传递一个字符串会导致将多个参数传递给回调(字符串的每个字符都被视为参数):

pool.apply_async(dispatch_call, [f])

pool.apply_async(dispatch_call, (f,))

关于python - Windows 上的 multiprocessing.Pool.apply_async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21570367/

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