我查看了子进程模块的文档并用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的同时阻止它?