gpt4 book ai didi

python - iter(subprocess.Popen_instance.stdout.readline, '' ) 是一个繁忙的循环吗?

转载 作者:行者123 更新时间:2023-12-01 02:41:59 24 4
gpt4 key购买 nike

让我们考虑以下代码构造:

p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, ''):
print(line)

这个for循环是一个繁忙的循环,还是会懒惰地等待进程的输出数据?我怎样才能检查这个?无论答案如何,它是 CPython 语言规范或实现细节的一部分吗?

我对主要操作系统(Windows、macOS、Linux)上的 Python 2.x 和 Python 3.x 及其各自的内核都很感兴趣。

最佳答案

由于 readline 阻塞,循环仅在有可供读取的输出时才繁忙。

从命令行测试:

#!/usr/bin/env python

import subprocess
args = ('cat', '-')
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, ''):
print(line.rstrip('\n'))


$ ./x.py
a
a
b
b
<Ctrl-D>

关于python - iter(subprocess.Popen_instance.stdout.readline, '' ) 是一个繁忙的循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45598122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com