第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

表中100萬(wàn)數(shù)據(jù),多線程更新,怎么設(shè)計(jì)?

表中100萬(wàn)數(shù)據(jù),多線程更新,怎么設(shè)計(jì)?

慕哥6287543 2019-02-20 20:12:08
表中有100萬(wàn)+條數(shù)據(jù),通過(guò)cate_id分成8類,并且在不停增加,默認(rèn)status=1我現(xiàn)在需要寫爬蟲,從表中讀數(shù)據(jù),然后請(qǐng)求一個(gè)api,把返回的數(shù)據(jù)再更新回去,更新status=2。 多線程不知道怎么設(shè)計(jì)目前這么寫的,感覺(jué)這樣寫很扯淡 while True: for i in cate_ids: tp_items = TpItem.objects.filter(cate_id=i, status=1)[:1000] if tp_items: p.apply_async(info_parse(tp_items, proxy_list)) p.close() p.join() time.sleep(30) #每輪從表中各cate_id取1000條數(shù)據(jù)進(jìn)行處理。 因?yàn)椴煌琧ate_id的數(shù)據(jù)量不一樣,這樣跑到后面可能只剩下一個(gè)cate_id類別的數(shù)據(jù)沒(méi)有處理完,相當(dāng)于變成單線程在跑了。該怎么設(shè)計(jì)?
查看完整描述

4 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

建議可以用生產(chǎn)者-消費(fèi)者模式。

  1. 使用python的Queue隊(duì)列,創(chuàng)建一個(gè)隊(duì)列。

  2. 開啟一個(gè)生產(chǎn)者線程,從數(shù)據(jù)庫(kù)中讀出status=1的數(shù)據(jù),并一條一條的放入隊(duì)列中。

  3. 開啟多個(gè)消費(fèi)者線程,數(shù)量按實(shí)際測(cè)試情況設(shè)置。消費(fèi)者線程每次從隊(duì)列中取出一條記錄,發(fā)起API請(qǐng)求,當(dāng)請(qǐng)求完成后寫入數(shù)據(jù)庫(kù)。

python的Queue自帶線程同步機(jī)制,可以簡(jiǎn)化開發(fā)。
由于瓶頸應(yīng)該在調(diào)用遠(yuǎn)程API,讀取數(shù)據(jù)用一個(gè)線程就夠了,如果嫌慢,可以開8個(gè)線程,每個(gè)線程讀一個(gè)表。
生產(chǎn)者線程從數(shù)據(jù)庫(kù)讀數(shù)據(jù)時(shí)可以做流量限制,在往隊(duì)列放status=1的數(shù)據(jù)時(shí),如果隊(duì)列中數(shù)量達(dá)到了1000條(或自定義閥值)時(shí)阻塞住,直到隊(duì)列中任務(wù)數(shù)量少于1000條,防止隊(duì)列被寫爆掉。

查看完整回答
反對(duì) 回復(fù) 2019-03-04
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

每次找出5000,多線程更新,分多次進(jìn)行

查看完整回答
反對(duì) 回復(fù) 2019-03-04
?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

不知道為什么要分cate_id進(jìn)行數(shù)據(jù)塊處理,直接讀取一定數(shù)量的數(shù)據(jù)進(jìn)行線程分割,如果要針對(duì)不同cate_id進(jìn)行不同處理也可以放在線程里進(jìn)行分割。

查看完整回答
反對(duì) 回復(fù) 2019-03-04
  • 4 回答
  • 0 關(guān)注
  • 590 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)