微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows上的multiprocessing.Pool.apply_async

我正在尝试使用一个池来并行处理一些subprocess调用。 一切工作正常,如果我构build池的整个迭代,并使用imap , map , imap_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上?

Python线程与Linux中的多处理

“pcntl_fork():Error 12”是什么意思?

双向消息在OS内的两个进程之间传递

Bash:在多个核心上运行相同的程序

为什么孩子没有死?

等待程序的最后一个实例

在Linux下使用Atlas在numpy中的线程错误

自定义对象是由Python的多处理进程共享的吗?

运行多个python程序时的高内核cpu

在C中同步进程和信号量和信号

你应该把这个回调参数作为一个序列(列表/元组)来传递。

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

pool.apply_async(dispatch_call,[f])

要么

pool.apply_async(dispatch_call,(f,))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐