簡體   English   中英

在信號處理程序完成運行之前退出Python程序

[英]Python program exiting before signal handler is finished running

我已經注冊了SIGINT處理程序,以便在python程序退出之前保存一些數據。 似乎處理程序在完成之前已終止。 為什么會發生這種情況,我該怎么辦?

import sys
import signal
import pickle

debug_data = {
    # some hash
}
debug_known_values = {
    # some other hash
}

def exit_run(signal, frame):
    print("Saving debug data...")
    with open("debug_data.pickle", 'wb') as debug_data_file:
       pickle.dump(debug_data, debug_data_file)
       print("done dumping debug data")
    print("Saving debug known values...")
    with open("debug_known_values.pickle", 'wb') as debug_known_values_file:
        pickle.dump(debug_known_values, debug_known_values_file)
        print("done dumping known values")
    print("exiting")
    sys.exit(0)
signal.signal(signal.SIGINT, exit_run)


if __name__ == "__main__":
    input()
    exit_run(None, None)

如果我按Enter鍵可以正常退出程序,

Saving debug data...           
done dumping debug data        
Saving debug known values...   
done dumping known values      
exiting   

如果我按Ctrl + C,我會得到

Saving debug data...            
done dumping debug data         
Saving debug known values...    

我在Windows x64上使用python 3.3.2。

此問題是由使用ComEmu引起的。 它正在殺死進程,然后才能完成退出。 該代碼在普通的cmd窗口中可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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