[英]SIGINT signal handler behaviour difference in python 2.7 vs 3.7
import signal
def handler(signum, frame):
exit(0)
signal.signal(signal.SIGINT, handler)
str = 'abc'*1000000000
print(str)
print("done")
上面給出的代碼在使用 python3.7 運行時,在按下 ctrl+C 時立即停止,但是當使用 python2.7 運行時,需要多次按 ctrl+C 鍵。
如果這種行為有正當理由,請告訴我。
是的,這種行為是有正當理由的。 time.sleep
的行為在 Python 2.7 和 Python 3.7 之間發生了變化。
實際的暫停時間可能比請求的少,因為任何捕獲的信號都會在執行該信號的捕獲例程后終止
sleep()
。
在 3.5 版更改:即使睡眠被信號中斷,該函數現在也至少睡眠幾秒鍾,除非信號處理程序引發異常(有關基本原理,請參閱PEP 475 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.