Python检查是否有多个程序正在运行,然后增加写入文件的值

2024-03-29 14:30:17 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我对编程很陌生,所以对于格式不好/不可靠的代码我很抱歉

我试图制作一个程序,跟踪某些程序运行的时间。它查看程序是否正在运行,然后向变量添加1,然后将变量写入文件。问题是我不能同时运行多个循环来检查这些程序是否正在运行。这导致我的代码只检查第一个是否正在运行

我的问题是,是否有可能同时进行几个无限循环,以查看一个程序是否同时运行。如果是这样,我该怎么做。如果有其他解决方案可以完成同样的事情,请在下面告诉我

我不知道如何检查程序是否正在运行,所以我从here中获取了使用的代码

我现在掌握的代码是:

import time
import psutil


def programrunning(processName):
    '''
    Check if there is any running process that contains the given name processName.
    '''
    # Iterate over the all the running process
    for proc in psutil.process_iter():
        try:
            # Check if process name contains the given name string.
            if processName.lower() in proc.name().lower():
                return True
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            pass
    return False;


def write(file, var):
    store_thing = open(file, "w+")
    store_thing.write(var)
    store_thing.close()


def create(filename):
    open(filename, "x")


def read(filename):
    read_p = open(filename, "r")
    read_p.mode == "r"
    content = read_p.read()
    return content


def whilerun(program):
    while programrunning(program) == True:
        var = read(program + ".txt")
        programvar = var
        programvar = int(programvar) + int(1)
        time.sleep(1)
        write(program + ".txt", str(programvar))
    while programrunning(program) == False:
        var = read(program + ".txt")
        programvar = var
        programvar = int(programvar) + int(1)
        time.sleep(1)
        write(program + ".txt", str(programvar))


whilerun("program1")
whilerun("program2")
whilerun("program3")

Tags: the代码name程序txtreadvardef
1条回答
网友
1楼 · 发布于 2024-03-29 14:30:17

我会为你的程序设置一个循环

programs = ["program1", "program2", "program3"]

def whilerun(programs):
    while True:
        any_alive = False    # flag for inf loop prevention
        for program in programs:
            if programrunning(program):
                #   do sth for program running  
                any_alive = True
            else:
                #   do sth for program NOT running
                pass

        if not any_alive:    # stop the loop if all processes are dead
            break

相关问题 更多 >