2016-12-29 7 views
1

私は、jupyterノートブックでいくつかのvpythonスクリプトを書き直そうとしています。これまで私は多くの問題に遭遇していませんでしたが、私が書き直そうとした最後のものはかなり遅くなりました。それはVIDLEで非常に迅速に実行されます。私はPython 3.5.0とJupyter 4.1.0でsierraOSを使用しています。VPythonがJupyterでかなり遅い

コードはいくつかのオブジェクトを作成し、whileループでその位置を変更します。 当初ループはvisual.rate(5000)でしたが、私は無駄に50に減らそうとしました。私はまた、オブジェクトの数を2つに減らそうと試みましたが、依然として非常にゆっくりと作業していました。ここでは、コードの私の最も簡単なバージョンがあります:

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ノートで特に遅いことが原因となるものを特定し、またはその周りにどのような方法を提案することはできますか?それ以外の場合は、JupyterノートブックでインラインではなくVIDLEでシミュレーションを出力することができます(コードはまだJupyterノートブックから実行されます)

答えて

1

JupiterではいくつかのClassicが書かれているためC++ではJupyter VPythonはPythonで実装されています(ベクトルクラスはCython化されています)。しかし、別の問題は、Pythonプログラムからノー​​トブックに大量のデータを送るのにはコストがかかることです。したがって、すべてのループ反復でデータを送信しているので、trail1とtrail1.appendを削除することをお勧めします。代わりに、obj1 =球(pos =ベクトル(5e12,0,0)、半径= 5e11、make_trail =真)と言う。その後、ポイントは、ノートブックに何も送信することなく、ノートブック側のトレイルに追加されます。また、obj1コンストラクタの設定間隔をデフォルト値の1以外に設定することもできます。

すべてのループ反復でobj1.posを更新するのと同様の問題があります。毎秒1000 obj1.posの更新を、サーバーからブラウザに実行される比較的細いパイプを通じて送信しています。すべての反復で変数 "pos"を更新することを検討しますが、obj1.posは50回の反復ごとに更新します。

0

IDLEからvpythonモジュールを実行できるようになりました。 VPython 7は、あなたがJupyterノートブックで実行されていないことを検出し、ブラウザとの独自の通信を設定します。しかし、私はそれがあなたのケースで違いを生むかどうかは分かりません。 VIDLE(またはIDLE)は3Dアニメーションを出力できません。

私はVPythonの質問を提起するには良い場所は

https://groups.google.com/forum/?fromgroups&hl=en#!forum/vpython-users

でVPythonフォーラムであることを宣伝します
関連する問題