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

使用不同的CMD名称并发运行多个python脚本,python,multiprocessing,Python,Multiprocessing,我尝试通过multiprocessing.Process()在test.py中同时调用a.py和b.py,它成功了。但是a.py、b.py和test.py的进程名称“/usr/bin/python/tmp/test.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

我尝试通过multiprocessing.Process()在test.py中同时调用a.py和b.py,它成功了。但是a.py、b.py和test.py的进程名称“/usr/bin/python/tmp/test.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名称,如下所示:(这可以帮助我识别不同的进程是否正在运行。)

请提供帮助和建议:)

源代码如下:

test.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:

b、 py:


您正在使用
a.py
b.py
作为python中的库,因此它被以与执行文件
test.py
相同的名称调用。无论是使用
多处理
还是
joblib
都会出现相同的情况

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

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


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

阅读Python»2.7.13文档
subprocess
aNOWAIT方法中选择, 相应地编辑您的问题代码

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进行测试

这是我问题的一个解决方案,但通过列出Python xxx.py的行似乎有点奇怪。使用
子流程
而不是
流程
@stovfl能否
子流程
调用模块的特定方法?谢谢。是的,最简单的情况调用
下面的
方法
,如果u u name _;
你能帮我解释一下解决方案吗?比如说?谢谢:)不,流程的名称不会更改流程标题,它只是用于标识目的“返回子流程”是什么意思?谢谢:)@WillZhou:
子流程。?
是占位符。阅读建议的文档并从
子流程
模块中选择一种方法。
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()
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