찾다

 >  Q&A  >  본문

Python多线程编程的输出格式问题?

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

*** 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

那我应该怎样做呢?

迷茫迷茫2858일 전749

모든 응답(4)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-17 16:38:38

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

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

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

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

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

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

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

    회신하다
    0
  • 阿神

    阿神2017-04-17 16:38:38

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

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 16:38:38

    로깅

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:38:38

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

    회신하다
    0
  • 취소회신하다