簡體   English   中英

Python主線程中斷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM