python多进程将自动退出

python多进程将自动退出,python,multithreading,join,process,exit,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 __i

对不起,我的英语很差,但我会尽量简单地解释。 我的情况是,我使用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因此关闭了一些进程,或者是线程.join()不起作用。
我使用的是activepython2.6 32位。

很可能您的线程在长时间运行的操作中出现异常并被终止。我认为您的英语足够好,但您的问题应该可以回答。特别是,不清楚Engine的“join”方法是做什么的,也不清楚Engine类本身是做什么的。在我看来,这一切就像某种长时间运行的蜘蛛/监视器。如果是这样的话,您可能应该防御性地编程,并期望您的程序不时突然关闭,虽然您应该努力修复那里的bug,但我认为有些bug是不可避免的(例如,服务器关闭、共享环境中因内存过度消耗而退出的进程、网络错误等).停止更改默认编码…这是错误的样式谢谢你的回答!!!我捕获了程序中的所有异常,但没有捕获任何异常。“join”方法是python中用于等待子线程退出的模块“threading”的方法。我在程序中设置了默认编码,因为我想让所有的程序都使用“utf-8”编码,编码问题造成了很多错误。嗨,我想我找到了resason。我检查了winserver2003的日志,它显示python.exe遇到了一个应用程序错误,错误模块是etree.pyd,它来自lxml-2.3.win32-py2.6。我更改了lxml的版本,这几天不再发生错误。