gpt4 book ai didi

在 mayavi 场景窗口关闭之前,Python 脚本不会继续

转载 作者:行者123 更新时间:2023-12-05 07:54:59 26 4
gpt4 key购买 nike

以下代码(导入除外)在循环中执行,其中打开了 4 个图形并绘制了简单的图形。但是,当创建 mayavi 场景时,程序停止并仅继续一次!全部!数字已关闭!它在打印命令之前/之后停止:

from mayavi import mlab as mayavi_mlab


plot_extent = (-20, 20, 0, 30, 0, 1)
s= mayavi_mlab.surf(x, y, z, colormap='PuBu',extent=plot_extent, vmin=-0.5, vmax=0.5)

mayavi_mlab.axes(s, color=(.7, .7, .7), extent=plot_extent,ranges=(-120, 120, 0, 10J,0,1), xlabel='site i', ylabel='energy E',x_axis_visibility=True, y_axis_visibility=True, z_axis_visibility=False)
mayavi_mlab.view(azimuth=-90, elevation=35, distance=70, focalpoint=None)

print('before')
mayavi_mlab.show()
print('after')

我做错了什么?平台:os x 10.9.5

Python 2.7.9 |Anaconda 2.1.0 (x86_64)| (默认,2014 年 12 月 15 日,10:37:34)[GCC 4.2.1 (Apple Inc. build 5577)] 在 Darwin 上

最佳答案

docs for mayavi.mlab.show状态:

By default, this function simply creates a GUI and starts its event loop if needed.

因此,mayavi_mlab.show() 将启动主事件循环,直到该循环结束后才返回。但情况就是这样,当所有图形都已关闭并且没有 UI 留下来显示时。

如果您不希望这部分代码被阻塞,您应该使用 threading , multiprocessing或任何其他并发库或方法。如果您想快速实现这一目标,os.fork()可能就足够了:

print('before')
if os.fork() == 0:
try:
mayavi_mlab.show()
finally:
os._exit(os.EX_OK)
print('after')

但请记住,这会给您留下一个 Zombie processes .

关于在 mayavi 场景窗口关闭之前,Python 脚本不会继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30503419/

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