imitações de memória de Python Popen.communicate (
Tenho o seguinte pedaço de código Python (executando a versão 2.7) que resulta emMemoryError
xceções sendo lançadas quando trabalho com arquivos grandes (vários GB
myProcess = Popen(myCmd, shell=True, stdout=PIPE, stderr=PIPE)
myStdout, myStderr = myProcess.communicate()
sys.stdout.write(myStdout)
if myStderr:
sys.stderr.write(myStderr)
Lendo o documentação paraPopen.communicate()
, parece haver algum buffer em andamento:
Not A leitura dos dados é armazenada em buffer na memória, portanto, não use esse método se o tamanho dos dados for grande ou ilimitad
Existe uma maneira de desativar esse buffer ou forçar a limpeza periódica do cache enquanto o processo é executad
Que abordagem alternativa devo usar no Python para executar um comando que transmita gigabytes de dados parastdout
?
Devo observar que preciso lidar com fluxos de saída e err