进程变得僵尸-Python3多处理

时间:2020-01-05 17:44:29

标签: python python-3.x multithreading multiprocessor

首先,我将解释我的脚本的结构:

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)

现在我面临的问题是:

  1. 仅打印第一个联接的print语句,但所有进程均成功启动。(这意味着未执行的所有进程都联接)。
  2. 第二,有些进程变成僵尸,当使用多进程运行但在外部运行函数时没有多进程时运行得很好(所以我知道由于某些问题,join无法正常工作,我们的函数很好)。
  3. 第三,就我而言,我应该使用多重处理。池或多处理。程序对我来说很好吗?有什么建议吗?
  4. 第四,我想知道,除了多线程和多处理之外,是否还有其他选择。可能有泳池吗?

我也尝试了另一种方法,但是没有像这样工作:

set_start_context('spawn')

据我所知,因为它像在外部通过popen运行脚本一样,分别在外部运行每个进程

注意:
我正在使用Ubuntu 16.04。我有一个可以使用多重处理的方案。过程,多处理。池和类似多处理的东西,但是不能在此处使用多线程。

0 个答案:

没有答案
相关问题