背景与stdin的python子进程

时间:2016-03-23 19:39:29

标签: python subprocess stdin

我查看了子进程模块的文档并用P_NOWAIT替换了spawn1,但我不知道如何使用它并将数据写入stdin。也就是说,如果我打电话给

pid = Popen(...).pid

正如文档所示,那么我在哪里与stdin PIPE进行通信。这是一些示例代码

文件1:

#!/usr/bin/env python
# testing how to run a processin the background while writing to stdin
#
import subprocess
data = "".join([str(i) for i in range(0,200)])
p = subprocess.Popen(['./b.py'], stdin=subprocess.PIPE)
p.communicate(data)
print "code after communicate"

文件2(' ./ b.py')

#!/usr/bin/env python
import sys
import time
data = sys.stdin.readlines()
print "background process started"
time.sleep(10)
print "background process done"

所以,我想要实现的效果是运行第一个文件(f.py)会打印出来:

background process started
code after communicate
background process done

然而,我所看到的是#34;沟通后的代码"在"后台处理完成后打印#34;所以看起来p.communicate在后台进程完成之后才会阻塞,如何在写入stdin的同时阻止它?

0 个答案:

没有答案