我可以从外部查看在后台运行的Python程序的进度吗?

时间:2016-02-29 09:55:22

标签: python ubuntu subprocess

我有一个Python程序,可能需要几天才能完成在我的云托管的Ubuntu机器上运行。在目前的阶段,只有在我打开shell的情况下才能看到程序的进度。 print("processed: " + str(finalCount) + " files.") - 简单明了。

自学习of this trick以来,我认为如果我可以检查程序的进度而不必打开shell并使用ps -e

找到该过程将会很棒

有没有一种简单的方法可以达到这个目的?

我有几个想法,但我不确定它们的可行性(因为性能至关重要。这些程序可以持续数天到数周)。第一个想法是建立一个非常简单的MySQL数据库,每次任务完成执行时都会更新。不知道会给服务器带来多大的压力 - 或者这是否是一个有效的想法。

第二个想法:让程序将其状态附加到简单的日志文件中。然后,如果我很好奇,我可以简单地下载当前版本的日志文件。

有什么想法?想法?建议?

3 个答案:

答案 0 :(得分:2)

Python有一个名为logging的标准库。它可以在程序运行时记录进度。这些日志可以作为日志文件输出。你可以try it

答案 1 :(得分:1)

对于这个用例,数据库不是一个好主意。

使用python logging模块记录任务的状态/进度,它非常轻,如果您没有快速更新/记录,也不会有太大问题。

答案 2 :(得分:0)

answer linked to the question you cite中所述,您可以使用GNU屏幕跟踪长时间运行的进程。我经常在长时间运行的过程中使用它并写了blog post with the most common command arguments

使用以下方式开始屏幕会话:

    screen -S sessionname

为了找到屏幕会话,稍后使用sessionname为其命名。开始一个漫长的过程。然后用以下内容分离会话:

    CTRL-A-D

您可以稍后重新附加会话:

    screen -r sessionname

同时,写入文本日志听起来是个好主意。请查看解释how to write log files with python的官方文档。