Python:在不丢失数据的情况下使用控件停止skcript
我有一个python科学脚本,用于计算循环中运行的某种传热和流动动力学。每次通过循环时,它都会打印出一些关于脚本状态的信息。有了这些数据,我可以在运行时看到它是否是一个可行的模拟,或者有时在某个点上它变得不可行 问题是,如何在不丢失数据的情况下停止脚本?因为在整个模拟结束时,我会打印出一些图表等,但我不想运行脚本,直到最后,当我已经看到。所以我需要的是一些用户中断,比如ctrl+c。我想尝试捕捉这个键盘用户中断,然后转到模拟的末尾绘制图形等 顺便说一句,我在Spyder工作 感谢您的建议或更复杂的解决方案,这里有一个小代码示例:Python:在不丢失数据的情况下使用控件停止skcript,python,database,user-controls,spyder,experimental-design,Python,Database,User Controls,Spyder,Experimental Design,我有一个python科学脚本,用于计算循环中运行的某种传热和流动动力学。每次通过循环时,它都会打印出一些关于脚本状态的信息。有了这些数据,我可以在运行时看到它是否是一个可行的模拟,或者有时在某个点上它变得不可行 问题是,如何在不丢失数据的情况下停止脚本?因为在整个模拟结束时,我会打印出一些图表等,但我不想运行脚本,直到最后,当我已经看到。所以我需要的是一些用户中断,比如ctrl+c。我想尝试捕捉这个键盘用户中断,然后转到模拟的末尾绘制图形等 顺便说一句,我在Spyder工作 感谢您的建议或更复杂
while i<10000:
calculated_data = i + i
print(calculated_data)
plt.plot(i,calculated_data)
而我你试过了吗
try:
while i<10000:
calculated_data = i + i
print(calculated_data)
except KeyboardInterrupt:
save_me(calculated_data)
raise
试试看:
而iyou可以将计算出的数据存储在某个地方。可能在sqlite中?是的,这是我唯一想到的方法,但我认为可能会有更好的选择,甚至是用户定义的shortcutsOkay,当重新考虑它对我的应用程序不方便时。我实际上有两个循环,因为内循环运行科学模拟,外循环使用不同的参数集多次运行模拟。因此,我想跳过一次内部循环运行,但下一次运行仍不受影响。比如每50次运行等待用户输入5秒钟。所以,若用户并没有点击“中止”,它将继续。
was_interrupted = False
def receive_signal(signum, stack):
global was_interrupted
was_interrupted = True
signal.signal(signal.SIGUSR1, receive_signal)
for s in range(max_simulation):
params = next_parameterset()
while i < 10000:
calculated_data = i + 1
print(calculated_data)
if was_interrupted:
save_me(params, calculated_data)
was_interrupted = False
break