iT邦幫忙

0

請問python while迴圈在等什麼?

  • 分享至 

  • xImage

import time, subprocess

t = 5

while t > 0:
  print(t, end = ' ')
  t = t-1
  time.sleep(1)
subprocess.Popen(['start', 'p398.wav'], shell=True)

想像中是螢幕上會陸續倒數54321,然後才放音樂。
實際卻是停頓5秒後,開始播放音樂,然後一下印出數字54321。
不懂為什麼會這樣???
懇請知道的大大幫忙解惑,謝謝。m(__)m

(前一篇發問因故取消,改成這篇,但是被洗掉了,沒人看到,於是重發一篇)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
re.Zero
iT邦研究生 5 級 ‧ 2023-01-24 16:28:20

你遇到的是 Python 基於 buffer 機制而發生的現象,處理方式能用 flush=True (即 print(t, end = ' ', flush=True))。
有興趣可去看 sys.stdout 的敘述,還有 What does print()'s flush do? 的討論。
(或是 Google Python print flush)

我要發表回答

立即登入回答