Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python进程控制?_Python_Unix_Freebsd - Fatal编程技术网

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脚本,这是解释器的名称,后跟脚本的名称。两者都可以是完整路径,也可以只是程

我有一个关于UNIX下正确的进程控制的问题。 我有FreeBSD8.0服务器和python应用程序。我需要启动python应用程序进程3次(client.py脚本)。如果试图通过cron启动第4个进程,则必须执行sys.exit()

你能给我一个正确的方法来控制我的流程吗? ps-带有线程数的auxww或pid文件。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中使用共享内存和信号量,但不确定这是否正确不过,这是最好的解决方案。