Python进程控制?
我有一个关于UNIX下正确的进程控制的问题。 我有FreeBSD8.0服务器和python应用程序。我需要启动python应用程序进程3次(client.py脚本)。如果试图通过cron启动第4个进程,则必须执行sys.exit() 你能给我一个正确的方法来控制我的流程吗? ps-带有线程数的auxww或pid文件。Python库中是否存在现成的解决方案Python进程控制?,python,unix,freebsd,Python,Unix,Freebsd,我有一个关于UNIX下正确的进程控制的问题。 我有FreeBSD8.0服务器和python应用程序。我需要启动python应用程序进程3次(client.py脚本)。如果试图通过cron启动第4个进程,则必须执行sys.exit() 你能给我一个正确的方法来控制我的流程吗? ps-带有线程数的auxww或pid文件。Python库中是否存在现成的解决方案 谢谢 在FreeBSD中,ps在其输出中显示命令行。对于Python脚本,这是解释器的名称,后跟脚本的名称。两者都可以是完整路径,也可以只是程
谢谢 在FreeBSD中,
ps
在其输出中显示命令行。对于Python脚本,这是解释器的名称,后跟脚本的名称。两者都可以是完整路径,也可以只是程序名
所以你可以这样做:
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()
虽然这不能回答您的问题中有关cron的部分,因此它不能解决您的问题,但我认为处理流程的正确方法是使用子流程,或者使用,或者使用实现(当然,您可以使用线程,但在某些平台下,线程不会利用多核和CPU,因此您可能不感兴趣)
我知道这不符合您对特定问题的描述,但您可以将其牢记在心,并据此设计未来的程序。不幸的是,我认为没有类似Python的方法来实现这一点,至少据我所知不是这样。您可以看看如何在Python中使用共享内存和信号量,但不确定这是否正确不过,这是最好的解决方案。