サブプロセスで asyncio をテストするために使用している単純な python プログラムがあります。
import sys, time
for x in range(100):
print("processing (%s/100) " % x)
sys.stdout.flush()
print("enjoy")
sys.stdout.flush()
これをコマンド ラインで実行すると、目的の結果が得られます。
ただし、asyncio から呼び出されると、決して終了しません。
process = yield from asyncio.create_subprocess_exec(
*["python", "program.py"],
stdout=async_subprocess.PIPE,
stderr=async_subprocess.STDOUT,
cwd=working_dir
)
# this never finishes
yield from process.communicate()
ps ax
このプロセスが<defunct>
であることを示しています。意味がわかりません