首先,我将解释我的脚本的结构:
Script1-(调用)-> Script2函数,该函数通过多处理进一步调用不同脚本中的12-15个函数,在这些函数中,有些具有无限循环,有些具有线程。 包含线程的函数还会调用其中具有无限循环的某些函数。
多重处理的代码就像:
Script1.py
def func1():
#some infinite functionality
Script2.py
def func2():
#some infinite functionality
Script3.py
def func3():
#Thread calling
#..
#..
#and so on...
from multiprocessing import Process
from Script1 import func1
from Script2 import func2
from Script3 import func3
process=[]
process.append(Process(target=func1))
process.append(Process(target=func2))
process.append(Process(target=func3))
process.append(Process(target=func4))
process.append(Process(target=func5))
process.append(Process(target=func6))
# ..
# ..
# and so on.
for p in process:
p.start()
print("process started:", p)
for p in process:
p.join()
print("process joined:", p)
现在我面临的问题是:
我也尝试了另一种方法,但是没有像这样工作:
set_start_context('spawn')
据我所知,因为它像在外部通过popen运行脚本一样,分别在外部运行每个进程
注意:
我正在使用Ubuntu 16.04。我有一个可以使用多重处理的方案。过程,多处理。池和类似多处理的东西,但是不能在此处使用多线程。