El día 9 de mayo de 2012 03:32, Chema Cortes <pych...@gmail.com> escribió:
> [....] > > k.terminate() > pool.terminate() > > O sea, el proceso "saving" prácticamente se ve interrumpido en el > mismo momento que extrae el último dato de la queue, que en el caso de > windows se nota por un fallo general de las I/O. Aquí me he colado. El problema que hay con windows es que el nuevo proceso se crea como una copia completamente intacta del intérprete de python, sin ningún fichero abierto. No pasa como en linux, que es capaz de hacer un "fork(2)" exáctamente con los mismos recursos abiertos que poseía el proceso padre. En windows tienes dos opciones: 1) crear un manager remoto para compartir el fichero entre procesos 2) crear un proceso que se encargue de todas las operaciones con el fichero, quizás lo más sencillo en tu caso: def salida(out, fname): with open(fname, 'w', buffering=0) as outfile: while True: msg = out.get() print >>outfile, msg out.task_done() if __name__=="__main__": print 'Started!' q=JoinableQueue() out=JoinableQueue() ot = Process(target=salida, args=(out,'test_par.txt')) ot.daemon = True ot.start() out.put('This is the test file') ... -- Hyperreals *R: http://ch3m4.org/blog Quarks, bits y otras criaturas infinitesimales _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/