亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Thread.getName() 不代表實際的工人姓名

Thread.getName() 不代表實際的工人姓名

九州編程 2022-01-05 20:15:30
我編寫了一個 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()


查看完整回答
反對 回復 2022-01-05
  • 1 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號