[英]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.py
和b.py
作為python中的庫,因此以與執行文件test.py
相同的名稱進行調用。 使用multiprocessing
或joblib
發生相同的情況。
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.