python - Python 3 中池和多处理的问题

标签 python python-3.x multiprocessing pool

目前我正在尝试将我的小 python 脚本转换为支持多线程/核心。几天来我一直在阅读有关 multiprocessing 模块的信息,一段时间以来我一直在努力让它满足我的需要,但我仍然不知道为什么它不起作用。

This是工作代码,this是我实现泳池 worker 的方法。由于没有适当的锁,而且一开始我不想让它变得太复杂,所以我已经禁用了日志记录到文件。

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

最佳答案

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

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

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

subprocess.Popen(['/path/to/program', 'arg1', 'arg2'], *otherarguments)

关于python - Python 3 中池和多处理的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368341/

相关文章:

python - 用于在文件夹中查找文件的 Bash 脚本

python - Django CharField 在不应该的时候接受空值

Python asyncio任务列表生成而不执行函数

python - 当 Python 应用程序在 Bluemix 之外运行但在 Bluemix 中运行时失败

python - 如何删除 Django 中的 session 变量?

python - 如何按特定规则排序 django

python - 如何与无限循环同时运行 Bottle?

Python 多进程终止进程

python - 使用 python 更改线程中的对象值

python - 维基百科消歧错误