对不起,我的英语很差,但我会尽力解释一下。 我的情况是我使用的每个进程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。