最近在學習Python多線程,看到了一道選擇題,來練習一下吧!
import threading
def worker():
print("Worker")
return
threads = []
for i in range(5):
t = threading.Thread(target=worker())
threads.append(t)
for thread in threads:
thread.start()
這段代碼會輸出什么?
解析:
1. 首先,導入線程模塊。
2. 定義函數(shù) worker(),函數(shù)內(nèi)輸出 "Worker"。
3. 定義一個空列表 threads 用于存儲線程。
4. 循環(huán) 5 次,創(chuàng)建一個線程 t,執(zhí)行 worker() 函數(shù),并將 t 存入 threads 列表。
5. 循環(huán)每個線程,開始運行線程。
根據(jù)以上解析,我們可以得到答案:
Worker
這是因為,循環(huán)內(nèi)的 t = threading.Thread(target=worker()),target 參數(shù)傳入的不是函數(shù),而是函數(shù)的執(zhí)行結(jié)果。改正如下:
t = threading.Thread(target=worker)
然后運行程序,輸出如下:
Worker
Worker
Worker
Worker
Worker
我們成功地創(chuàng)建了 5 個線程,每個線程都執(zhí)行了 worker() 函數(shù)。