我編寫了一個 python 腳本,將市場數據導入到 MariaDB 數據庫中。為了加快導入速度,我決定使用模塊線程。因此,首先一個函數使用 URL 填充隊列,從中下載數據并將其導入到我的數據庫中。不幸的是,導入函數似乎只由一個線程而不是多個線程處理。一開始的輸出狀態:Thread-1Thread-2Thread-3Thread-4這表明創建了 4 個單獨的工作人員,但進入 while 循環使看起來只有一個工作人員實際處理獲取的 url。Thread-1 processes https://someurl=2 queue# 32Thread-1 processes https://someurl=3 queue# 31Thread-1 processes https://someurl=4 queue# 30Thread-1 processes https://someurl=5 queue# 29Thread-1 processes https://someurl=6 queue# 28Thread-1 processes https://someurl=7 queue# 27Thread-1 processes https://someurl=8 queue# 26Thread-1 processes https://someurl=9 queue# 25Thread-1 processes https://someurl=10 queue# 24Thread-1 processes https://someurl=11 queue# 23Thread-1 processes https://someurl=12 queue# 22Thread-1 processes https://someurl=13 queue# 21Thread-1 processes https://someurl=14 queue# 20Thread-1 processes https://someurl=15 queue# 19Thread-1 processes https://someurl=16 queue# 18Thread-1 processes https://someurl=17 queue# 17Thread-1 processes https://someurl=18 queue# 16我希望輸出看起來像(理想情況下):Thread-1 processes https://someurl=2 queue# 32Thread-2 processes https://someurl=3 queue# 31Thread-3 processes https://someurl=4 queue# 30Thread-4 processes https://someurl=5 queue# 29我在這里錯過了什么?
1 回答

RISEBY
TA貢獻1856條經驗 獲得超5個贊
為每個工人打印不同的“名字”:
def import_mo(i, urls):
station_id = 60003760
print('Worker', i)
# etc
# later:
print("Worker %s processes %s queue# %s" % (i, url, urls.qsize()))
并創建線程:
for i in range(num_threads):
worker = Thread(target=import_mo, args=(i,urls,))
worker.setDaemon(True)
threads.append(worker)
worker.start()
添加回答
舉報
0/150
提交
取消