0

很抱歉我的英语很差,但我会尽量简单地解释一下。我的情况是我使用 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() 没有工作。我使用activepython2.6 32位。

4

0 回答 0