Python多线程编程的输出格式问题?
迷茫
迷茫 2017-04-17 16:36:38
0
4
719

今天在学习多线程编程,由于多个线程是同时启动的,所以输出也出现在了同一行,怎样才能换行输出呢?
输出结果是这样的:

*** MULTIPLE THREADS
startingstartingstarting   fibfacsum   at:at:at:   Tue Dec 08 22:30:43 2015Tue Dec 08 22:30:43 2015Tue Dec 08 22:30:43 2015


facsum  finished at:finished at:  Tue Dec 08 22:30:44 2015Tue Dec 08 22:30:44 2015

我想要的结果是这样的:

starting  fib    at: Sat Nov 22 09:51:39 2014

starting  fac    at:Sat Nov 22 09:51:39 2014

starting  sum   at:Sat Nov 22 09:51:39 2014

那我应该怎样做呢?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(4)
大家讲道理

먼저 답변해 주셔서 감사합니다. 그러나 Python 초보자인 저에게는 이러한 방법이 아직 명확하지 않습니다.
이 문제를 해결하기 위해 다른 방법을 사용했습니다.
스레드 간 전환은 한 스레드가 몇 문장을 실행하고 다른 스레드가 교대 루프에서 몇 문장을 실행하면 한 문장이 중단되지 않는 것이라고 생각했습니다.
원래 실수는 출력 문을 다음 형식으로 작성한 것입니다.

'starting', funcs[i].__name__, 'at:',\를 인쇄합니다.
    c시간()

사실 Python의 관점에서 이는 명령문이 아니라 여러 명령문의 합입니다.

'시작'을 인쇄합니다.
funcs[i].__name__ 인쇄,
'at:'을 인쇄합니다.
ctime() 인쇄

이 경우 스레드가 서로의 출력을 방해하므로 출력 문을 다음과 같이 변경했습니다.

'%s 시작: %s\n' % (funcs[i].__name__, ctime())을 인쇄합니다.

이 경우 정상적으로 출력됩니다.

阿神

출력 문에 잠금을 추가합니다.

迷茫

로깅

小葫芦

각 스레드는 출력해야 할 내용을 Queue()에 넣고 구체적으로 스레드를 시작하여 Queue()에서 데이터를 읽어 화면에 출력합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿