我目前正在从各个站点抓取数据。 抓取器的代码存储在模块 (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/