Teño o seguinte anaco de código Python (executando v2.7) que resulta en MemoryError
excepcións que se lanzan cando traballo con ficheiros grandes (varios GB):
myProcess = Popen(myCmd, shell=True, stdout=PIPE, stderr=PIPE)
myStdout, myStderr = myProcess.communicate()
sys.stdout.write(myStdout)
if myStderr:
sys.stderr.write(myStderr)
Ao ler a documentación a ] Popen.communicate ()
, parece que se está producindo un búfer:
Nota Os datos lidos almacénanse na memoria, polo que non use este método se o tamaño dos datos é grande ou ilimitado.
¿Hai algún xeito de desactivar este búfer ou forzar a limpeza caché periódicamente mentres se executa o proceso?
Que enfoque alternativo debo usar en Python para executar un comando que transmita xigabytes de datos a stdout
?
Debo ter en conta que teño que xestionar fluxos de saída e erro.