5

サブプロセスで 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>であることを示しています。意味がわかりません

4

1 に答える 1