Python子进程?

2024-04-28 10:51:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我可能在重复这个问题,但我没有找到符合我要求的答案。 原谅我的无知。在

我有一个程序在运行,它不断地从服务器。It永远不要停下来直到它被杀死。在

我想把它包装在一个python脚本中,以便在输出到达时读取并处理它。 我尝试了堆栈溢出中的一些子进程思想,但没有用。 请提出建议。在

p=subprocess.popen(args,stderr=PIPE,stdin=PIPE,stdout=PIPE,shell=FALSE)
#p.communicate#blocks forever as expected
#p.stdout.read/readlines/readline-->blocks
#select(on p.stdout.fileno())-->blocks

最好的方法是什么?在


Tags: 答案程序服务器脚本进程堆栈stdoutargs
3条回答

听起来你可以用asynchronous version of the subprocess module。有关详细信息,请查看开发人员的blog。在

您可以运行另一个程序,将其输出定向到一个文件,然后使用Python的f.readline()跟踪该文件。在

有长度限制的阅读:

proc = subprocess.Popen(args, stdin=None, stdout=subprocess.PIPE, stderr=None)
while True:
    chunk = proc.stdout.read(1024)
    # chunk is <= 1024 bytes

这是你评论中的代码,稍作修改。它对我有用:

^{pr2}$

相关问题 更多 >