我目前正在从各个网站上删除数据。 scrappers的代码存储在模块(x,y,z,a,b)
中其中x.dump是一个使用Files存储抓取数据的函数。 dump函数只需一个参数' input'。 注意:所有转储功能都不相同。
我试图并行运行这些转储功能。 以下代码运行正常。 但我注意到它仍然遵循串行顺序x然后y ...执行。
这是解决问题的正确方法吗?
多线程和多处理是并行编程的唯一本机方式吗?
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()
答案 0 :(得分:3)
那是因为run()
是实现任务本身的方法,你并不打算从外面这样调用它。您应该调用start()
来生成一个新进程,然后在另一个进程中调用run()
并将控制权返回给您,这样您就可以做更多的工作(以及稍后join()
)。
答案 1 :(得分:0)