私はverbose_print
コマンドを使用してコンソールに出力を記録するオープンソースのPythonライブラリに取り組んでいます。現在、それは次のようになります。`stdout.flush`が動作しないコンソールで` print() `が遅れますか?
def sys_write_flush(s):
""" Writes and flushes without delay a text in the console """
sys.stdout.write(s)
sys.stdout.flush()
def verbose_print(verbose, s):
""" Only prints s (with sys_write_flush) if verbose is True."""
if verbose:
sys_write_flush(s)
私はこのようになります変更提案:別にそれは、Python 2で失敗しているという事実から
def verbose_print(verbose, *args):
""" Prints everything passed execpt the first arguement if verbose is True."""
if verbose:
print(*args)
を、私は思った(これを固定するためのボーナスポイント!)これはよりよく、より熟達したものになるでしょう。利点は、最初の引数がTrue
またはFalse
でなければならないことを除いて、とまったく同じようにverbose_print
を扱うことができるということです。
レポの所有者は、このメッセージに答えた:
私はこの1つを文書化している必要がありますが、基本的に問題は でいくつかのコンソール(およびIPythonのノートブックでは、少なくとも時)、 ということでしたstdout.flushは瞬間的なものですが、 "print"コマンドが遅れてしまうので、私の方法はフィードバックを提供する上でより良い方法でした。
という既知の問題が解決されない限り、印刷するように変更しないでください。
これはまだ有効ですか? print()
に続いてsys.stdout.flush()
が遅延を避けるでしょうか?これを書くための良い方法はありますか?ドキュメントから