을 코 루틴 방법, 나는 평소와 같이, 다음 main()
을 계속 실행 ... 설정 나는 인쇄 할 수 있습니다 IPython,로 돌아갈 깊은 main()
에서 함수를 원하는 :은 IPython <->에게 콜백()는 IPython 터미널에서
IPython
run main.py
...
def callback(*args):
...
try:
back_to_ipython() # <-- how to do this ?
In[]: print, set *args ...
...
except KeyboardInterrupt: # or IPython magic
pass
return # from callback(), keep running main()
이것은 python2에서 실행되어야합니다. 감사 embed
를 들어, :
추가 화요일 10월 11일 -
는 (?> 콜백 은 아마도 일부 영리 scipy 사람이 이런 짓을했다 이름 callback
는 anything
될 수있다,하지만 내 사용 사례 scipy.optimize입니다.) 하지만 버그로 실행하는 것, 또는 내 오해 : 당신은 중단 점을 삽입 할 수
# http://stackoverflow.com/questions/39946052/how-to-coroutine-ipython-a-callback
import sys
from IPython import __version__
from IPython import embed # $site/IPython/terminal/embed.py
from IPython.terminal.ipapp import load_default_config
print "versions: IPython %s python %s" % (
__version__, sys.version.split()[0])
def pdict(header, adict):
print header
for k, v in sorted(adict.items()):
print "%s\t: %s" % (k, v)
config = load_default_config()
pdict("load_default_config:", config)
aglobal = [3]
#...............................................................................
def callback(adict):
# pdict("callback:", adict)
t = adict["t"]
x = 3
embed(header="callback: t %d" % t)
# interact: print t x ...
# ^D/EOF
return
def aloop(*args):
for t in range(3):
callback(locals())
aloop(1, 2, 3) # works in "run this.py"
# but typing "aloop()" in an IPython terminal ->
# embed.py:218: UserWarning: Failed to get module unknown module
# global_ns.get('__name__', 'unknown module')
'back_to_ipython'에서 예외를'raise'하고 전역 공간에서'try' 블록에서'callback'을 실행합니다. –