gpt4 book ai didi

带有超时的 Python 子进程 readline

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:58 26 4
gpt4 key购买 nike

你好我有这样的问题,我需要执行一些命令并等待它的输出,但在读取输出之前我需要写入 \n 到管道。这是 unitest,所以在某些情况下,我测试的命令女巫不回答,我的测试用例停止在 stdout.readline() 并等待 smth。所以我的问题是,是否可以为阅读行设置超时之类的东西。

cmd = ['some', 'list', 'of', 'commands']
fp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
fp.stdin.write('\n')
fp.stdout.readline()
out, err = fp.communicate()

最佳答案

等待响应不超过一秒:

from subprocess import Popen, PIPE

p = Popen(['command', 'the first argument', 'the second one', '3rd'],
stdin=PIPE, stdout=PIPE, stderr=PIPE,
universal_newlines=True)
out, err = p.communicate('\n', timeout=1) # write newline

通过 http://pypi.python.org/pypi/subprocess32/ 可以在 Python 2.x 上使用超时功能。 3.2+ 子进程模块的反向移植。参见 subprocess with timeout .

对于使用线程、signal.alarm、select、iocp、twisted 或只是一个临时文件的解决方案,请参阅问题下相关帖子的链接。

关于带有超时的 Python 子进程 readline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634898/

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