python while跳出_python – 在while循环中生成绘图后在KeyboardInterrupt上退出
我正在使用matplotlib实时监控实验,以在while循环中生成绘图.理想情况下,循环应该退出像KeyboardInterrupt这样的东西.这在Ubuntu测试中运行良好.在
Windows 7中,使用ipython,它会以“终止批处理作业(是/否)?”退出.然后关闭翻译.我想避免这种行为,并在KeyboardInterrupt之后保持解释器打开.这是一个测试脚本.
[编辑2]:如果ipython作为ipython –pylab加载,此脚本在Windows中可以正常工作.
import time
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot([0], [0], 'b-o')
window = 50
plot_data = np.zeros((window, 2))
i = 0
start = time.time()
while True:
try:
data = [time.time() - start, np.random.rand()]
print ' '.join('{:.2f}'.format(x) for x in data)
if i < window:
plot_data[i,:] = data
line.set_data(plot_data[0:i+1,0], plot_data[0:i+1,1])
else:
plot_data[0:window-1] = plot_data[1:window]
plot_data[window-1] = data
line.set_data(plot_data[:,0], plot_data[:,1])
ax.relim()
ax.autoscale_view(True,True,True)
fig.canvas.draw()
plt.pause(0.1)
i += 1
except KeyboardInterrupt:
print "Program ended by user.\n"
break
print 'Success!'
[编辑1]:我应该更清楚为什么我用matplotlib标记这个.以下示例脚本在任一操作系统中都不会出现问题.
i = 0
start = time.time()
while True:
try:
data = [time.time() - start, np.random.rand()]
print ' '.join('{:.2f}'.format(x) for x in data)
time.sleep(0.1)
except KeyboardInterrupt:
print "Proram ended by user. \n"
break
print 'Success!'
昨天安装了所有软件包,作为Enthought的全新安装的一部分.