簡體   English   中英

使用不同的CMD名稱同時運行多個python腳本

[英]Run multiple python scripts concurrently with different CMD name

我嘗試通過multiprocessing.Process()在test.py中同時調用a.py和b.py,它起作用了。 但是a.py,b.py和test.py的進程CMD名稱為'/ 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名稱,如下所示:(這可以幫助我識別是否正在運行其他進程。)

# 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/a.py
501 61488 61486   0  2:33PM ??         0:00.01 /usr/bin/python /tmp/b.py

請幫忙咨詢:)

源代碼如下:

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:

import time


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

if __name__ == '__main__':
    printa()

b.py:

import time

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

if __name__ == '__main__':
    printb()

您正在使用a.pyb.py作為python中的庫,因此以與執行文件test.py相同的名稱進行調用。 使用multiprocessingjoblib發生相同的情況。

Process方法中有一個名稱選項( multiprocessing.Process(self, group=None, target=None, name=None, args=(), kwargs={}) ),但是正如@fedterzi所說,它僅用於識別目的。

如果要調用進程或文件,則可以使用庫進程。

根據您正在執行的任務,例如將一堆進程並行化,您還可以通過bash使用gnu parallel或其他方法來完成所需的行為。

閱讀Python»2.7.13文檔, 使用-subprocess模塊
subprocess選擇一種NOWAIT方法,相應地編輯您的問題代碼。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM