2011-10-24 18 views
6

Ho visto un post simile here ma si riferisce a Python 2.6 e speravo che ci fosse un modo più semplice.Python 2.7: Stampa thread safe

Dalla lettura del thread sembra che il modo migliore sia sostituire semplicemente tutte le mie istruzioni print con sys.stdout.write (s + '\ n')?

Speravo ci fosse un modo più bello che mi ha permesso ancora da utilizzare Print

risposta

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

è un bel trucco a buon mercato e sporco.

+0

impressionante. C'è qualche svantaggio nell'aggiungere sempre questo a un file python? (cioè perché non sempre si ha la sicurezza del thread) – Setheron

+0

Non gestisce [argomenti di parole chiave '' print()'] (http://docs.python.org/library/functions.html#print). Oltre a rendere l'output sempre senza buffer. –

+0

Ma è la scommessa più semplice? – Setheron

0

ho trovato che le seguenti opere su entrambi multi-thread & ambiente multi-processo, molto semplice:

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