2011-10-24 19 views
6

He visto una publicación similar here sin embargo, se refiere a Python 2.6 y esperaba que hubiera una manera más fácil.Python 2.7: Imprimir hilo seguro

Al leer el hilo, parece que la mejor manera es simplemente reemplazar todas mis declaraciones de impresión con sys.stdout.write (s + '\ n')?

Tenía la esperanza de que hubiera una manera más agradable que me permitió seguir utilizando impresión

Respuesta

12
from __future__ import print_function 
print = lambda x: sys.stdout.write("%s\n" % x) 

es un buen truco barato y sucio.

+0

impresionante. ¿Hay alguna desventaja de agregar siempre esto a un archivo de Python? (es decir, por qué no siempre tiene seguridad de subprocesos) – Setheron

+0

No maneja ['print() argumentos de palabra clave'] (http://docs.python.org/library/functions.html#print). Además de hacer que la salida siempre esté sin búfer. –

+0

¿Pero es la apuesta más fácil? – Setheron

0

He encontrado que los siguientes trabajos sobre ambos multi-hilo & entorno multi-proceso, muy simple:

def sprint(content): 
    print("{0}~{1}\r".format(str(datetime.datetime.now()), content))