我查看了子进程模块的文档并用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

但是,我看到的是“完成后台处理”之后打印的“沟通后的代码” . 所以看起来p.communicate在后台进程完成之后才会阻塞,我怎么能在写入stdin时阻止它呢?