python - 多处理程序 - 不并行执行

标签 python multiprocessing

我目前正在从各个站点抓取数据。 抓取器的代码存储在模块 (x,y,z,a,b)

其中x.dump是一个使用Files来存储抓取数据的函数。 转储函数采用单个参数“输入”。 注意:所有转储功能都不相同。

我正在尝试并行运行每个转储函数。 下面的代码运行良好。 但我注意到它仍然遵循串行顺序 x 然后 y ... 来执行。

这是解决问题的正确方法吗?

多线程和多处理是并行编程的唯一 native 方法吗?

from multiprocessing import Process

import x.x as x
import y.y as y
import z.z as z
import a.a as a
import b.b as b

input = ""

f_list = [x.dump, y.dump, z.dump, a.dump, b.dump]
processes = []

for function in f_list:
        processes.append(Process(target=function, args=(input,)))

for process in processes:
        process.run()

for process in processes:
        process.join()

最佳答案

这是因为 run() 是实现任务本身的方法,您不应该像这样从外部调用它。您应该调用 start() ,它会生成一个新进程,然后在另一个进程中调用 run() 并将控制权返回给您,以便您可以做更多的工作(并且稍后join())。

关于python - 多处理程序 - 不并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24366753/

相关文章:

python - 如何使用 BeautifulSoup 发送 key

python - os.system ('cls' ) 不清除 Pycharm 中的屏幕?

python - 如何跳过内置 int 中的尾随零位?

python - 多处理问题 [pyqt, py2exe]

python - 为什么 python -V 写入错误流?

python - 运算符不存在 : character varying + character varying

python - 多线程进程中的结果排列

c - 是否有设置超时的 wait() 系统调用版本?

python - 全局变量增量和python多处理

java - 如何在不同进程中运行两个 Activity