我认为每个进程管道连接的工作都是异步的,但事实并非如此。
一个.py
#!/usr/bin/env python
import sys
import time
for line in sys.stdin:
time.sleep(2)
sys.stdout.write(line.upper())
sys.stdout.flush()
和 b.py
#!/usr/bin/env python
import sys
for line in sys.stdin:
sys.stdout.write(line.capitalize())
sys.stdout.flush()
和 test.txt
hello
world
python
以下代码以 2 秒为单位逐行显示。
$ ./a.py < test.txt
HELLO
WORLD
PYTHON
但是以下代码完全显示了一次。
$ ./a.py < test.txt | ./b.py
Hello
World
Python
看起来壳管正在同步工作。我怎样才能异步进行?