2

目前我正在尝试将我的小 python 脚本转换为支持多个线程/内核。我已经阅读多处理模块好几天了,我也一直试图让它满足我的需要一段时间,但我仍然不知道为什么它不起作用。

是工作代码,是我实现池工作者的方法。由于没有锁定,而且我一开始不想让它太复杂,我已经禁用了日志记录到文件。

还是不行。它甚至不输出任何类型的错误消息。运行后,它只显示欢迎消息,然后继续运行,但不输出任何所需的输出,即每个转换文件 2 行(转换前 + 转换后)。

4

1 回答 1

1

您的工作人员所做的就是等待已启动的子流程完成。他们没有任何实际工作要做,因为这是由外部子流程执行的,所以他们将一直处于空闲状态。对你所做的事情使用多处理确实是矫枉过正,为此使用线程更为合适。

如果您想学习如何进行多处理,请尝试涉及进程间通信、同步、管道......

但也要解决您的问题:看看参数subprocess.call需要什么。你用一个空格分隔的命令字符串来调用它。如果你想让它工作你必须通过shell=True,否则整个字符串被解释为可执行文件的名称。
使用 subprocess 调用程序的首选方法是将程序和参数指定为列表:

subprocess.Popen(['/path/to/program', 'arg1', 'arg2'], *otherarguments)
于 2012-04-29T01:33:01.040 回答