python – 在while循环中生成绘图后在KeyboardInterrupt上退出

python – 在while循环中生成绘图后在KeyboardInterrupt上退出,第1张

概述我正在使用matplotlib实时监控实验,以在while循环生成绘图.理想情况下,循环应该退出像KeyboardInterrupt这样的东西.这在Ubuntu测试中运行良好.在 Windows 7中,使用ipython,它会以“终止批处理作业(是/否)?”退出.然后关闭翻译.我想避免这种行为,并在KeyboardInterrupt之后保持解释器打开.这是一个测试脚本. [编辑2]:如果ipyt 我正在使用matplotlib实时监控实验,以在while循环中生成绘图.理想情况下,循环应该退出像KeyboardInterrupt这样的东西.这在Ubuntu测试中运行良好.在 Windows 7中,使用ipython,它会以“终止批处理作业(是/否)?”退出.然后关闭翻译.我想避免这种行为,并在KeyboardInterrupt之后保持解释器打开.这是一个测试脚本.

@H_301_8@

[编辑2]:如果ipython作为ipython –pylab加载,此脚本在windows中可以正常工作.@H_301_8@

@H_301_8@

import timeimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure()ax = fig.add_subplot(111)line,= ax.plot([0],[0],'b-o')window = 50plot_data = np.zeros((window,2))i = 0start = 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[:,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标记这个.以下示例脚本在任一 *** 作系统中都不会出现问题.@H_301_8@

@H_301_8@

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"        breakprint 'Success!'

昨天安装了所有软件包,作为Enthought的全新安装的一部分.@H_301_8@解决方法 现在,我发现在多台windows机器上解决此问题的最佳方法如下……

@H_301_8@

@H_301_8@

print 'press \'q\' to end run'time.sleep(1.0)fig = plt.figure()ax = fig.add_subplot(111)line,'b-o')window = 150plot_data = np.zeros((window,2))i = 0start = time.time()while True:    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,1])    else:        plot_data[0:window-1] = plot_data[1:window]        plot_data[window-1] = data        line.set_data(plot_data[:,1])    ax.relim()    ax.autoscale_vIEw(True,True)    fig.canvas.draw()    plt.pause(delay)    i += 1    if msvcrt.kbhit():        if ord(msvcrt.getch()) == 113:            print "Program ended by user.\n"            break print 'Success!'

不幸的是,这根本不是平台独立的,但过去几天我读过的所有内容都让我相信平台无关的键盘输入实际上是不可能实现的.我原来问题中的代码在Unix和一些windows安装中运行良好.此代码适用于我尝试过的少数windows安装.所有这些在通过ipython –pylab运行时效果最佳.这可能必须足够好了.@H_301_8@ 总结

以上是内存溢出为你收集整理的python – 在while循环中生成绘图后在KeyboardInterrupt上退出全部内容,希望文章能够帮你解决python – 在while循环中生成绘图后在KeyboardInterrupt上退出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1196761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存