Problemas con Popen3

Chema Cortes ch3m4 en ch3m4.org
Jue Feb 12 13:04:25 CET 2004


Bertol Ana escribió:

> Ayer escribir un mail pq tenia problemas a la hora de utilizar una 
> funcion que me copiase ficheros de un directorio a otro. Me habeis dado 
> una n ueva solucion, pero se me olvido comentar qeu tengo que utilizar 
> esa funcion y debo modificarla lo menos posible.
> 
> Creo que el problema viene de la utilizacion de popen3. Creo que utiliza 
> un buffer para el almacenamiento de la entrada/salida, y es ese buffer 
> lo qeu se llena y provoca la parada del programa. Popen3 tiene un 
> parametro que permite indicar el tamanyo de ese buffer, pero que pasa 
> cuando no sabes que maximo debes darle??? Este es exactamente mi problema.

No creo que tengas problemas con el buffer. Por lo general, el valor por 
defecto, el que da el sistema, es más que suficiente. Pero además fíjate 
que llamas a popen3 una vez por cada fichero que copias, por lo que 
nunca deberías llegar a llenar el buffer.

No estoy seguro, pero puede que el problema venga de que "cierras" los 3 
canales estándar después de cada copia. No genera ningún error ya que 
los vuelve a abrir cuando los necesita; pero podría tener, como efecto 
colateral, un rebose en el pool de "handles" de la aplicación. 
Simplemente comenta las tres líneas con .close() a ver si va mejor (en 
caso necesario, en lugar de cerrarlos bastaría con hacer un .flush()).

Si siguen sin funcionar, intenta con la programación multihilo.


-- 
Res publica non dominetur




Más información sobre la lista de distribución Python-es