很抱歉我的英语很差,但我会尽量简单地解释一下。我的情况是我使用 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位。