python - VPython 在 Jupyter 中明显变慢

标签 python performance ipython jupyter-notebook vpython

我正在尝试在 jupyter 笔记本中重写一些 vpython 脚本。到目前为止,我还没有遇到很多问题,但我尝试重写的最后一个问题变得明显慢了。在 VIDLE 中运行速度非常快。我将 sierraOS 与 Python 3.5.0 和 Jupyter 4.1.0 一起使用。

代码创建了一些对象,然后在 while 循环中更改它们的位置。 最初循环有 visual.rate(5000),但我尝试将其减少到 50,但没有成功。我还尝试将对象的数量减少到只有两个,但仍然工作得很慢。这是我最简单的代码版本:

from vpython import scene, sphere, color, curve, arrow, mag, vector, rate,canvas
scene = canvas(width=800, height=600)
obj0 = sphere(pos=vector(0,0,0), radius=5e11)
obj1 = sphere(pos=vector(5e12,0,0), radius=5e11)
trail1= curve()

#some initial value
G = 6.7E-11
obj0.mass = 2.0E30
obj0.momentum = vector(0,0,0)
obj1.mass = 1.0E26
obj1.momentum = vector(0,0,0)

dt=200000.          
CrashFlag=0         

while(CrashFlag==0):
    rate(1000)
    obj1.force= -G*(obj0.mass*obj1.mass*obj1.pos)/(mag(obj1.pos)**3)
    obj1.momentum = obj1.momentum+ dt*(obj1.force)
    obj1.pos = obj1.pos + dt*obj1.momentum/obj1.mass
    trail1.append(pos=obj1.pos)
    if (mag(obj1.pos)<2.e11) :
        CrashFlag=1

您能找出在 Jupyter 笔记本中导致速度特别慢的任何因素,或者提出解决办法吗?否则,是否可以在 VIDLE 中输出模拟,而不是在 Jupyter 笔记本中内联(而代码仍将从 Jupyter 笔记本中运行)

最佳答案

Jupyter 中的某些 VPython 操作比 Classic 慢,因为 Classic 的大部分是用 C++ 编写的,而 Jupyter VPython 是用 Python 实现的(尽管向量类已被 Cythonized)。然而,一个单独的问题是,将大量数据从 Python 程序发送到笔记本的成本很高,因此我建议摆脱 Trail1 和 Trail1.append,因为您要在每次循环迭代中发送数据。相反,说 obj1 = sphere(pos=vector(5e12,0,0), radius=5e11, make_trail=True)。然后点将被添加到笔记本端的轨迹中,而无需向笔记本发送任何内容。您还可以考虑在 obj1 构造函数中将间隔设置为默认值 1 以外的值。

在每次循环迭代中更新 obj1.pos 时也存在类似的问题。您每秒通过从服务器到浏览器的相对狭窄的管道发送 1000 个 obj1.pos 更新。考虑在每次迭代中更新变量“pos”,但仅每 50 次迭代更新 obj1.pos。

关于python - VPython 在 Jupyter 中明显变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41388225/

相关文章:

python - 是否可以在套接字监听器上跟踪丢失的连接?

c++ - vector of vector的初始化很慢

python - 木星 pyspark : no module named pyspark

python - 无法找到或加载 Qt 平台插件 "xcb"

python - Windows下Jupyter中的kernel-1234.json在哪里?

python - Pandas groupby 和减去行

python - Selenium - X 时间后刷新所有选项卡

具有时间相关任务的 Android 性能

Python BeautifulSoup 城市抓取并发症

java - 了解Kafka写入速度