擅长:python、mysql、java
<p>如果您想要一个纯Python解决方案,您需要将读写器放在一个单独的线程中。<code>threading</code>包是一种轻量级的方法,可以方便地访问公共对象,并且没有混乱的分叉。</p>
<pre><code>import subprocess
import threading
import sys
proc = subprocess.Popen(['cat','-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
)
def writer():
for i in range(100000):
proc.stdin.write('%d\n' % i)
proc.stdin.close()
thread = threading.Thread(target=writer)
thread.start()
for line in proc.stdout:
sys.stdout.write(line)
thread.join()
proc.wait()
</code></pre>
<p>看到<code>subprocess</code>模块现代化,以支持流和协程,这可能是一件好事,这将允许混合Python片段和shell片段的管道被构建得更加优雅。</p>