verbose_print
명령을 사용하여 콘솔에 출력을 로깅하는 오픈 소스 파이썬 라이브러리에서 작업하고 있습니다. 현재는 다음과 같습니다 (!이 고정 보너스 포인트) 그 외에도 파이썬이 실패한다는 사실에서 `stdout.flush`가없는 콘솔에서는`print()`가 지연됩니까?
def verbose_print(verbose, *args):
""" Prints everything passed execpt the first arguement if verbose is True."""
if verbose:
print(*args)
, 내가 생각 :
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)
내가 다음과 같습니다 변경을 제안 이것은 더 좋고 더 관용적 일 것입니다. 첫 번째 인수는
True
또는
False
이어야한다는 점만 제외하면
verbose_print
을 정확히
print
과 같이 처리 할 수 있다는 장점이 있습니다.
그 일부 콘솔에서 (그리고 IPython 노트북에서, 적어도 당시) 나는이 일을 문서화해야하지만, 기본적으로 문제가 있었다, :
되찾기 소유자는이 메시지에 대답 stdout.flush가 순간적으로 나타나는 반면 "print"명령은 지연됩니다. 따라서 내 방법이 피드백을 제공하는 것이 더 낫습니다.
알려진 문제가 해결되지 않으면 인쇄를 변경하는 것이 좋습니다.
여전히 유효한 문제입니까? print()
다음에 sys.stdout.flush()
이 오는 것이 지연을 피하겠습니까? 이것을 작성하는 더 좋은 방법이 있습니까? 워드 프로세서