我知道有一些编写Python脚本的方法,以便在从终端执行时,您将进入解释器,并保留变量的结束状态。
是否可以在执行中切断python脚本并进入解释器,并保留脚本中该点的状态?例如,我有一个大循环,在每次迭代时都会将新的键值对输入字典。在循环结束时,字典被写出到文件中。现在运行脚本几个小时后,我意识到它不值得让它完成,但我仍然希望看到字典到目前为止。
脚本现在正在我的终端中运行 - 有没有从这里跳转到解释器并查看字典的当前状态?
编辑:在运行脚本之后进入解释器(保留状态)
python -i script.py
答案 0 :(得分:0)
如果您已经在运行它,那么您不能将它“删除”到交互式控制台
但是,您可以尝试使用gdb附加到正在运行的进程,请参阅https://wiki.python.org/moin/DebuggingWithGdb:
$ gdb python <pid of running process>
然后尝试调试它,就像使用C进程一样。
另见python: is it possible to attach a console into a running process
答案 1 :(得分:0)
这里有一个脏的解决方法的例子,使用try except和raw_input(对于python 2.7)。这不会让你进入解释器,但你可以使用ctrl + c暂停脚本并打印所需的变量来了解它的状态。
import time
t = 0
while 1:
try:
print time.time()
time.sleep(5)
t += 1
except KeyboardInterrupt:
print '\nt = {}'.format(t)
# time.sleep(5)
raw_input("Script paused! Enter anything to continue or press Ctrl+C to stop execution.")
您甚至可以将除了块调用放入pdb:
import pdb
pdb.set_trace()
进入调试器,你可以在其中使用python console。
答案 2 :(得分:-1)
不,你不能。如果要从具体状态重新启动脚本,则必须保留此状态并在重新启动脚本执行时加载它。在您的情况下,使用具有计算值的时态文件和其他来控制流量。并且不要忘记在成功时删除该文件。