當嘗試在Python 的多處理池中管理鍵盤中斷事件時,使用者經常會遇到進程掛起並需要外部終止的問題。本文旨在解決這個問題並提供一個可行的解決方案。
為了詳細說明問題中引入的挑戰,提供的程式碼旨在在收到 KeyboardInterrupt 訊號(透過按 ^)後優雅地終止池中的所有進程。 C)。然而,如所觀察到的,KeyboardInterrupt 會觸發執行暫停,阻止預期的終止程序生效。
這是由於 Python 錯誤阻礙了 KeyboardInterrupt 訊號傳遞給 threading.Condition.wait( ) 狀況。出現此問題的原因是除非指定逾時,否則 wait() 不會回傳。因此,在此過程中不會收到鍵盤中斷。
為了克服這個挑戰,建議的解決方案包括在wait() 條件中引入時間限制:
透過合併此超時,wait() 條件被迫立即回應KeyboardInterrupt訊號,從而允許正常終止池中的所有進程。
因此,此修改提供了一種在 Python 多處理池中管理鍵盤中斷的穩健方法,使用戶能夠在任何給定時間以受控方式有效停止所有進程。
以上是如何在 Python 的多處理池中優雅地處理鍵盤中斷?的詳細內容。更多資訊請關注PHP中文網其他相關文章!