我已经注册了一个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)
如果我按输入以正常退出程序,我得到
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...
我正在Windowsx64上使用Python3.3.2。你知道吗
这个问题是由使用ComEmu引起的。它在结束退出前终止了进程。代码在普通cmd窗口中运行良好。你知道吗
相关问题 更多 >
编程相关推荐