スレッド化を学習するために Python でスクリプトを作成しようとしていますが、スレッド内の for ループを停止できないようです。現在、私は pyInstaller を使用してスクリプトをコンパイルし、それを行うための最良の方法ではないことを知っているスレッドプロセスを終了しています。コマンドでスレッドを終了する方法を誰かに説明してもらえますか? 他の多くの質問を読みましたが、スレッドを「正しい」方法で停止する方法を理解できないようです。これをテストするために現在使用しているコードは次のとおりです。
class Thread(Thread):
def __init__(self, command, call_back):
self._command = command
self._call_back = call_back
super(Thread, self).__init__()
def run(self):
self._command()
self._call_back()
def test():
i = 20
for n in range(0,i):
#This is to keep the output at a constant speed
sleep(.5)
print n
def thread_stop():
procs = str(os.getpid())
PROCNAME = 'spam.exe'
for proc in psutil.process_iter():
if proc.name == PROCNAME:
text = str(proc)[19:]
head, sep, tail = text.partition(',')
if str(head) != procs:
subprocess.call(['taskkill', '/PID', str(head), '/F'])
関数は Tkinter で作成された GUI によって呼び出されますが、これは今のところ問題ありません。
そのすべてを読みたくない場合は、要点:Pythonのスレッドにforループがある場合、スレッドを「正しい方法」で停止するにはどうすればよいですか? ありがとう!
編集:申し訳ありませんが、最も重要だと思ったコードを引っ張ってきました。代わりに、コード全体を次に示します (これは、Python を学習するために使用しているテキスト メッセジャーですが、上記は、理解を深める前にスレッド化を初めて試みたものです)。http://pastebin.com/qaPux1yR