2016-12-29 1 views
1

jupyter 노트북에서 일부 vpython 스크립트를 다시 작성하려고합니다. 지금까지 많은 문제에 봉착하지는 않았지만 마지막으로 재 작성하려고 시도한 작업은 상당히 느려졌습니다. VIDLE에서는 매우 빠르게 실행됩니다. 나는 sierraOS를 Python 3.5.0과 Jupyter 4.1.0과 함께 사용하고있다.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

Classic이 많이 작성 되었기 때문에 일부 VPython 작업은 Jupyter에서 Classic보다 느립니다. C++에서는 Jupyter VPython이 Python으로 구현되었지만 (벡터 클래스는 Cython 화되었지만) 그러나 별도의 문제는 파이썬 프로그램에서 많은 양의 데이터를 노트로 전송하는 데 많은 비용이 듭니다. 따라서 모든 루프 반복에서 데이터를 전송하기 때문에 trail1 및 trail1.append를 제거하는 것이 좋습니다. 대신 obj1 = sphere (pos = vector (5e12,0,0), radius = 5e11, make_trail = True)라고 말하십시오. 그러면 포인트가 노트북에 아무 것도 보내지 않고도 노트북 측면의 흔적에 추가됩니다. obj1 생성자 설정 간격에서 기본값 1 이외의 값으로 간주 할 수도 있습니다.

모든 루프 반복에서 obj1.pos를 업데이트하는 것과 유사한 문제가 있습니다. 서버에서 브라우저로 실행되는 상대적으로 좁은 파이프를 통해 매초 1000 개의 obj1.pos 업데이트를 보냅니다. 모든 반복에서 "pos"변수를 업데이트하지만 obj1.pos를 50 반복마다 업데이트하는 것을 고려하십시오.

0

IDLE에서 vpython 모듈을 실행할 수 있습니다. VPython 7은 Jupyter 노트북에서 실행되지 않고 브라우저와 자체 통신을 설정하는 것을 감지하며, 경우에 따라 Jupyter의 통신보다 빠릅니다. 그러나, 귀하의 사건에 차이가 있는지 여부를 모르겠습니다. VIDLE (또는 IDLE)은 3D 애니메이션을 출력 할 수 없습니다. 나는 더 나은 장소가 VPython 질문을 제기 할 수 있다고 광고하는 것

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

에서 VPython 포럼에
관련 문제