[英]Python main thread interruption
誰能解釋一下interrupt_main()方法在Python中是如何工作的?
我有這段Python代碼:
import time, thread
def f():
time.sleep(5)
thread.interrupt_main()
def g():
thread.start_new_thread(f, ())
time.sleep(10)
print time.time()
try:
g()
except KeyboardInterrupt:
print time.time()
當我嘗試運行它時,它給我以下輸出:
1380542215.5
# ... 10 seconds break...
1380542225.51
但是,如果我手動中斷程序(CTRL-C),線程會被正確中斷:
1380542357.58
^C1380542361.49
為什么線程中斷僅在第一個示例中的10秒(而不是5)之后發生?
我在Python郵件列表中找到了一個古老的線程 ,但它幾乎沒有解釋。
raise KeyboardInterrupt
不會中斷time.sleep()
。 前者完全在python解釋器內部處理,后者調用操作系統函數。
因此,在您的情況下,鍵盤中斷已被處理,但僅在time.sleep()
完成其系統調用時。
試試這個:
def g():
thread.start_new_thread(f, ())
for _ in range(10):
time.sleep(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.