【发布时间】:2018-09-16 06:21:34
【问题描述】:
我编写了一个小型多进程程序,并期望该订单会 以下方式。
hello number
ls -l <output>
但它没有工作。所以我相信父进程不知道子进程。 主进程如何等待子进程完成。或者我缺少非常基本的 多处理的概念
#!/usr/bin/env python
import multiprocessing
import subprocess
def run_command():
pipe = subprocess.Popen("ls -l", stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
out, err = pipe.communicate()
pipe.wait()
print out, err
def msg(number):
print "hello %s" %(number)
run_command()
def main():
print "yes"
procs = []
for i in range(0, 100, 1):
process = multiprocessing.Process(target=msg, args=(i,))
procs.append(process)
for proc in procs:
proc.start()
for proc in procs:
proc.join()
if __name__ == "__main__":
main()
Expected code:
hello 0
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
hello 1
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
etc
获取输出: python check_process.py
yes
hello 0
hello 1
hello 2
hello 3
hello 4
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
total 4
-rw-rw-r-- 1 goswamia <#> 682 Apr 6 02:51 check_process.py
【问题讨论】:
-
不是先启动每个进程,然后等待每个进程完成,您必须等待每个进程完成之前开始下一个过程。只需删除第二个
for proc in procs:。 -
但是多处理的整个概念似乎毫无意义。
-
如果进程创建子进程我想让子进程完成并执行并行操作,我该如何处理这种情况
-
并行工作在
start和join之间完成。 -
是的,而不是进程调用另一个函数。我想等待完成这样的功能
标签: python python-2.7 multiprocessing