有没有办法在不中断程序的情况下检查Python脚本的进度?

时间:2015-12-03 23:44:08

标签: python

我们说我已经在python program.py中编写了一个脚本。我决定使用python program.py在终端中运行它。

此代码运行大量数据,需要几个小时才能运行。

有没有办法可以在不停止程序的情况下检查此代码的状态?

2 个答案:

答案 0 :(得分:3)

你可以尝试" strace"在运行脚本的服务器上(假设它是Linux发行版)。

我确信有很多其他方法可以获得类似的结果,但是strace一直是我的朋友。

说这是我的简单脚本:

[root@buzz tmp]# cat temp.py
#!/usr/bin/python
import time

for i in range(9999):
    print "Printing for %s time" % str(i)
    time.sleep(1)
[root@buzz tmp]#

这是strace输出:

[root@buzz ~]# strace -p 10071
Process 10071 attached - interrupt to quit
select(0, NULL, NULL, NULL, {0, 736733}) = 0 (Timeout)
write(1, "Printing for 16 time\n", 21)  = 21
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
write(1, "Printing for 17 time\n", 21)  = 21
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
write(1, "Printing for 18 time\n", 21)  = 21
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
write(1, "Printing for 19 time\n", 21)  = 21
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
write(1, "Printing for 20 time\n", 21)  = 21
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
write(1, "Printing for 21 time\n", 21)  = 21
select(0, NULL, NULL, NULL, {1, 0}^C <unfinished ...>
Process 10071 detached
[root@buzz ~]#

答案 1 :(得分:0)

经典的停止问题啊:它真的还在运行吗?如果您已经启动了该程序,则无法执行此操作,除非您已在某些调试行中编写了检查外部配置以获取调试标志的内容(并且我认为您没有这样做,因为您和&#39; t) #39;再问这个问题)。

您可以查看脚本的输出或日​​志(如果存在),检查脚本处理的数据中特定位置的符号,从而估计数据处理的进度。

最坏的情况:停止事情,添加一些记录,然后在睡觉前开始它。