python multiprocess将自动退出

时间:2012-09-04 04:10:29

标签: python multithreading join process exit

对不起,我的英语很差,但我会尽力解释一下。 我的情况是我使用的每个进程Tkinter创建一个对话框。然后创建一个类名引擎,创建6个线程然后引擎类使用t.join()等待线程退出。

import threading
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

from engine import Engine
import settings

class Controller(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.run_list=[False,True]
        self.run_sqe=0
        self.engine_is_running=False

    def run(self):
        self.is_running=True
        self.is_update=self.run_list[self.run_sqe]
        settings.S_is_update=self.is_update

        self.eng=Engine(settings.S_target_website)
        self.eng.start()

        self.run_sqe+=1
        if self.run_sqe>=len(self.run_list):
            self.run_sqe=0

        self.engine_is_running=True
        self.eng.join()
        if self.is_running:
            self.run()

    def stop(self):
        self.eng.is_running=False
        self.is_running=False

问题是我启动了4个这样的python进程。所有进程的代码几乎相同。 当我同时启动4个进程时,其中一个或两个将在随机时间内关闭,可能在1小时或3个小时后甚至更晚。我让所有进程和线程在退出时打印一些单词,但它当他们关闭时没有打印任何东西,就像它突然严重关闭一样。

机器的cpu总是使用90%甚至更高,我想也许是python因为它关闭了一些进程,或者原因是threading.join()没有用。 我使用32位的activepython2.6。

0 个答案:

没有答案