【发布时间】:2011-10-16 08:14:27
【问题描述】:
我有以下 Python 代码块(运行 v2.7),当我处理大型(几 GB)文件时会引发 MemoryError 异常:
myProcess = Popen(myCmd, shell=True, stdout=PIPE, stderr=PIPE)
myStdout, myStderr = myProcess.communicate()
sys.stdout.write(myStdout)
if myStderr:
sys.stderr.write(myStderr)
在阅读documentation to Popen.communicate() 时,似乎有一些缓冲发生:
注意读取的数据是缓存在内存中的,所以如果数据量很大或者没有限制,不要使用这种方式。
有没有办法禁用这种缓冲,或者在进程运行时强制定期清除缓存?
我应该在 Python 中使用什么替代方法来运行将千兆字节数据流式传输到 stdout 的命令?
我应该注意我需要处理输出和错误流。
【问题讨论】:
-
我需要能够流式输出和错误。
标签: python memory stream popen