파이썬의 기본 애플릿에서 코드를 수정하지 않고 테스트하고 문제를 디버깅하도록 만든 코드가 있습니다. 이 날이 코드를 구축 할 수 있습니다Python 스레딩에서 여러 개의 stdout 수행 플러시
#!/usr/bin/env python
import sys, threading, time
def loop1():
count = 0
while True:
sys.stdout.write('\r thread 1: ' + str(count))
sys.stdout.flush()
count = count + 1
time.sleep(.3)
pass
pass
def loop2():
count = 0
print ""
while True:
sys.stdout.write('\r thread 2: ' + str(count))
sys.stdout.flush()
count = count + 2
time.sleep(.3)
pass
if __name__ == '__main__':
try:
th = threading.Thread(target=loop1)
th.start()
th1 = threading.Thread(target=loop2)
th1.start()
pass
except KeyboardInterrupt:
print ""
pass
pass
이 코드 내 목표는 같은 시간에 (세정과) 표준 출력 형식으로 출력을 표시 이러한 스레드를 모두 가질 수 및 측면에 의해 다음 측면을 가지고있다
또는 뭔가. 문제는 내가 각각 하나씩 씻어 내리기 때문에 기본적으로 다른 문자열을 플러시한다는 것입니다. 나는 이것이 가능하다면 이것이 작동하도록하는 방법을 잘 모른다.
방금 스레드 중 하나를 실행하면 정상적으로 작동합니다. 그러나 터미널 출력에서 동시에 실행되는 자체 문자열로 두 스레드를 모두 실행할 수 있기를 원합니다.
터미널 스크린 샷
당신이 더 많은 정보가 필요하면 알려주세요 : 여기 사진은 내가 갖는 것을 표시한다. 미리 감사드립니다.
인쇄는 스레드로부터 안전하지 않습니다. 'logging' 모듈을 사용하거나, 어떤 종류의 잠금을 구현하거나, 인쇄를 다른 스레드로 옮기십시오. – Blender
나는 그것이 (exaple을 위해) 숫자를 보여줄 것이고 그때 그것을 플러시하고 그것의 오래된 장소에 새로운 것을 프린트하는 것을 좋아하기 때문에 나는 stdout을 사용한다. 따라서 출력 대신에 출력을위한 고정 된 지점을 생성하는 것만으로 모든 번호에 대해 새로운 행을 만들어서 인쇄 할 수 있습니다. – BlackVikingPro