gpt4 book ai didi

python - 运行脚本后保留一个数字 "on hold"

转载 作者:太空狗 更新时间:2023-10-29 17:17:03 25 4
gpt4 key购买 nike

我有这段 Python 代码:

from pylab import *
from numpy import *

time=linspace(-pi,pi,10000)
ycos=cos(time)
ysin=sin(time)

plot(time,ycos)
plot(time,ysin)

show()

如果我通过 Ipython 终端执行所有这些步骤,我可以保持图形打开并与之交互。但是,如果我通过 $python script.py 运行脚本,该图会立即打开和关闭。

作为脚本运行时,我如何才能拥有与 Ipython 终端相同的行为?

最佳答案

快速查看问题后,这是一个更明智的答案。

首先,让我们假设

from matplotlib import pylab
pylab.plot(range(10), range(10))
pylab.show()

不会“拖延”情节,即在节目结束前几乎没有显示。如果发生这种情况,则调用 pylab.show() 假定您正在以交互模式运行,因此在调用此函数后还有一些其他进程将继续执行。由于情况并非如此,Python 退出并显示绘图。现在,解决这个问题的第一种方法是强制 pylab.show 阻塞,方法是:

pylab.show(block=True)

仍然,我们不知道为什么 pylab.show 假设您在交互模式下运行。为证实其假设,请尝试运行以下代码

import matplotlib
print matplotlib.is_interactive()

如果打印出 True,则意味着您的默认配置设置为 interactive: True。要检查是哪个配置,请执行 print matplotlib.matplotlib_fname() 以找出它的路径。打开它并检查 interactive 参数的值。

现在,如果您不想修改配置,我会建议一个不同的解决方案:

import matplotlib
from matplotlib import pylab

if matplotlib.is_interactive():
pylab.ioff()
pylab.plot(range(10), range(10))
pylab.show()

因此,在任何情况下,matplotlib 都不会认为它必须在调用 show 方法之前渲染内容。最后,这些解决方案中最可怕的是使用 pylab.pause 或等效项:

from matplotlib import pylab
pylab.ion() # Force interactive
pylab.plot(range(10), range(10))
pylab.show() # This does not block
pylab.pause(2**31-1)

关于python - 运行脚本后保留一个数字 "on hold",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com