Python进程控制?

时间:2013-10-02 09:45:45

标签: python unix freebsd

我对UNIX下的正确进程控制有疑问。 我有FreeBSD 8.0服务器和python应用程序。我需要启动我的python应用程序进程3次(client.py脚本)。如果尝试通过cron启动第4个进程,他必须执行sys.exit()。

你能建议我以正确的方式控制我的流程吗? ps -auxww或带有线程数的pid文件。也许在Python库中存在一个现成的解决方案?

谢谢!

2 个答案:

答案 0 :(得分:1)

在FreeBSD中,ps在其输出中显示命令行。因此对于Python schript,这是解释器的名称,后跟脚本的名称。两者都可以是完整路径或只是程序名称。

所以你可以这样:

import subprocess
import sys

scriptname  = 'foo'
procs = subprocess.check_output(['ps', '-xa']).splitlines()
count = len([l for l in procs if 'python' in l and scriptname in l])
if count > 3:
    sys.exit()

答案 1 :(得分:0)

虽然这不能回答你提到cron的问题部分,但是它并没有解决你的问题,我认为处理你的进程的正确方法是使用子进程,使用{{3}或者通过使用python's multiprocessing module实现(当然你可以使用线程,但是他们不会在某些平台下利用多个内核和CPU,但是,它们可能对你不感兴趣)。

我知道这不符合您特定问题的描述,但您可以记住它并相应地设计您的未来程序。