2017-01-16 4 views
1

は、私は、スレッドへの単純な呼び出し持って動作しません:私はスレッドを停止する必要がある場合スレッドを殺すこと

aThread = threading.Thread(target=singleDriverThread, args=(d[0])) 

、その後、私はそれを起動する(aThread.start)を

私が行います

aThread.join() 

スレッドは実行中です..ヘルプ?

+0

'threading' APIを使用してスレッドを停止することはできません。独自のアルゴリズムを実装する必要があります。 'join'はスレッドが終了するのを待って、現在のスレッドをブロックするので、' aThread'に何らかの信号を送りません。終了するように指示します。 – ForceBru

+0

[Pythonでスレッドを削除する方法はありますか?](http://stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread-in-python) – Tagc

+0

"join"は "kill"ではありません。 '.join() 'を呼び出すと、一方のスレッドがもう一方のスレッドを待つことを意味します。 – dsh

答えて

1

スレッドを停止する場合は、そのスレッドを強制終了または通知する必要があります。このSO answerとこのSO answerは、スレッドの停止を処理します。 joinメソッドは、スレッドの終了を待機します。

一般に、スレッドを正常に停止させるには、停止メッセージ/信号を渡すことができるように通信チャネルを持つと便利です。

1

スレッドは、呼び出し可能なsingleDriverThreadが返されるまで実行を続けます。

例:

def singleDriverThread(): 
    while True: 
     # do stuff in eternal loop 
     pass 

をしかしsingleDriverThread場合は代わりに次のようになります:あなたが呼び出し可能singleDriverThreadはこのようになります場合は

コードが停止することはありません

def singleDriverThread(): 
    # do stuff 
    return 

その後、呼び出し可能な戻りますスレッドは残りのコードと結合します。

関連する問題