multithreading
読む前に重複しているとは思わないでください。とについて多くの質問がありますが、keyboard interrupt
os.systemを検討しているものは見つかりませんでした。重要なようです。
ワーカースレッドでいくつかの外部呼び出しを行うPythonスクリプトがあります。を押すと終了したいのですctrl+c
が、メインスレッドが無視しているようです。
このようなもの:
from threading import Thread
import sys
import os
def run(i):
while True:
os.system("sleep 10")
print i
def main():
threads=[]
try:
for i in range(0, 3):
threads.append(Thread(target=run, args=(i,)))
threads[i].daemon=True
threads[i].start()
for i in range(0, 3):
while True:
threads[i].join(10)
if not threads[i].isAlive():
break
except(KeyboardInterrupt, SystemExit):
sys.exit("Interrupted by ctrl+c\n")
if __name__ == '__main__':
main()
驚いたことに、に変更os.system("sleep 10")
すると正常に動作しtime.sleep(10)
ます。