使用不同的CMD nam并发运行多个python脚本

2024-04-19 20:22:38 发布

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

我尝试在中同时调用a.py和b.py测试.py通过多处理过程(),它起作用了。但是进程CMDa.py、b.py和测试.py,它们是'/usr/bin/python/tmp/测试.py'都是一样的。在

# ps -ef | grep b.py
UID   PID  PPID   C STIME   TTY           TIME CMD
501 61486 39878   0  2:33PM ??         0:00.05 /usr/bin/python /tmp/test.py
501 61487 61486   0  2:33PM ??         0:00.01 /usr/bin/python /tmp/test.py
501 61488 61486   0  2:33PM ??         0:00.01 /usr/bin/python /tmp/test.py

我希望这三个进程通过'ps-ef'显示不同的CMD名称,如下所示:(这可以帮助我识别不同的进程是否正在运行。)

^{pr2}$

请帮助建议:)

源代码如下:

在测试.py公司名称:

import multiprocessing
import a
import b


p1 = multiprocessing.Process(target=a.printa)
p2 = multiprocessing.Process(target=b.printb)

p1.start()
p2.start()

a.py:

import time


def printa():
    while True:
        print 'a'
        time.sleep(1)

if __name__ == '__main__':
    printa()

备份:

import time

def printb():
    while True:
        print 'b'
        time.sleep(1)

if __name__ == '__main__':
    printb()

Tags: pytestimport名称cmdbintime进程
2条回答

在python中,您正在使用a.py和{}作为库,因此它与执行的文件test.py同名。使用multiprocessing或{}都会出现相同的情况。在

Process方法(multiprocessing.Process(self, group=None, target=None, name=None, args=(), kwargs={}))中有一个name选项,但正如@fedterzi所说,它只用于识别目的。在

如果要调用进程或文件,可以使用库subprocess。在

根据您正在执行的任务,例如对一组进程进行并行化,您还可以使用gnu parallel或通过bash的其他方法来完成所需的行为。在

阅读Python»2.7.13文档using-the-subprocess-module
subprocessaNOWAIT方法中选择, 相应地编辑问题代码。在

import subprocess

def openCmd(name):
    return subprocess.?

if __name__ == '__main__':
    while True:
        key = raw_input('input 1=open, 0=terminate, q=quit:')
        print(key)
        if key == '1':
            A_p = openCmd(('a'))
            B_p = openCmd(('b'))
        if key == '0':
            A_p.terminate()
            B_p.terminate()
        if key == 'q':
            break

测试Python:2.7.9

相关问题 更多 >