【发布时间】:2017-04-12 07:10:17
【问题描述】:
我尝试通过 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()
【问题讨论】:
-
这是我的问题的解决方案,但列出 python xxx.py & 的行似乎有点奇怪。 stackoverflow.com/questions/28549641/…
-
使用
Subprocess而不是Process -
@stovfl
subprocess可以调用模块的特定方法吗?谢谢。 -
是的,最简单的情况调用
if __name__下面的method -
您能帮忙解释一下解决方案吗?像一个例子?谢谢:)