現在、私は「jupyter lab」を使用して、pythonのプログラムを実行しています。
以下の無限ループのコードを実行してみます。
while True:
time.sleep(2)
print("hello")
このコードを強制終了させるときは、「■ボタン」や「Ctrl+c」で強制終了させることができますが、以下の並列処理のコードでは強制終了することができません。
import threading
import logging
import time
def worker1():
logging.debug("start")
time.sleep(60)
logging.debug("end")
def worker2():
logging.debug("start")
time.sleep(6)
logging.debug("end")
if __name__ == '__main__':
t1 = threading.Thread(target=worker1)
t2 = threading.Thread(target=worker2)
t1.start()
t2.start()
time.sleep(2)
print("test1")
print("test2)
「anaconda prompt」を開いて、「Ctrl+ⅽ」で強制終了させていもいいのですが、毎回「jupyter lab」を起動させるのは面倒です。
他に良い方法はないのでしょうか?
調べてみた結果、どうやら「threading」に関しては強制終了させることができないようです。
ーーーーーーーーーーーーー
multiprocessingとthreadingの違いとして、threadingには terminate()関数がないというのがある。
自分のコード内で問題が起きる可能性があるので、さらには他のあらゆる場所であらゆる問題が起きる可能性があるので、実行中のスレッドを簡単に強制終了する方法はないのだ。
ーーーーーーーーーーー