tengo el siguiente trozo de código Python (v2.7 corriendo) que resulta en MemoryError
excepciones que son lanzadas cuando trabajo con grandes (varios GB) archivos:Alternativas a Python Popen.communicate() limitaciones de memoria?
myProcess = Popen(myCmd, shell=True, stdout=PIPE, stderr=PIPE)
myStdout, myStderr = myProcess.communicate()
sys.stdout.write(myStdout)
if myStderr:
sys.stderr.write(myStderr)
Al leer la documentation to Popen.communicate()
, no parece haber algunos de amortiguación pasando:
Nota los datos leídos se tampona en la memoria, así que no use este método si el tamaño de los datos es grande o ilimitado.
¿Hay alguna manera de desactivar este almacenamiento en búfer, o forzar que el caché se borre periódicamente mientras se ejecuta el proceso?
¿Qué enfoque alternativo debo usar en Python para ejecutar un comando que transmite gigabytes de datos a stdout
?
Debo señalar que necesito gestionar los flujos de salida y error.
Necesito poder transmitir la salida y el error. –