私の英語がとても下手で申し訳ありませんが、簡単に説明しようと思います。私の状況は、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つまたは2つがランダムな時間に、おそらく1時間後または3時間後にシャットダウンします.終了時にすべてのプロセスとスレッドにいくつかの単語を出力させますが、突然無作法にシャットダウンしたように、シャットダウン時に何も印刷しませんでした。
マシンの CPU は常に 90% 以上を使用します。おそらく Python が原因でプロセスがシャットダウンしたか、threading.join() が機能しなかったことが原因だと思います。私はactivepython2.6 32ビットを使用しています。