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

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

Python 同時(shí)填充一個(gè)列表

Python 同時(shí)填充一個(gè)列表

溫溫醬 2021-06-06 15:34:10
因此,我正在嘗試編寫多進(jìn)程代碼,希望能夠根據(jù)正在運(yùn)行的某些進(jìn)程填充列表。但它根本沒有修改列表?,F(xiàn)在我知道我不能訪問同一個(gè)元素并從多個(gè)線程增加它,因?yàn)樗鼤?huì)導(dǎo)致競(jìng)爭(zhēng)條件。但我所擁有的是從 ONE 和只有一個(gè)進(jìn)程訪問 ONE 索引的代碼。例如,如果我有一個(gè)包含 4 個(gè)元素的列表,我會(huì)運(yùn)行 4 個(gè)進(jìn)程,每個(gè)元素一個(gè)進(jìn)程。然而,這行不通。即使我讀到列表應(yīng)該是線程安全的。我寫了一個(gè)小程序來(lái)演示我的問題:from multiprocessing import Processlist = [0,0,0,0]def incrAt(idx):    list[idx] += 1p0 =  Process(target = incrAt, args=(0,))p1 =  Process(target = incrAt, args=(1,))p2 =  Process(target = incrAt, args=(2,))p3 =  Process(target = incrAt, args=(3,))p0.start()p1.start()p2.start()p3.start()# Do stuff while we wait...p0.join()p1.join()p2.join()p3.join()print(list) # should print [1,1,1,1] but prints [0,0,0,0]
查看完整描述

1 回答

?
精慕HU

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

那是因?yàn)槿肿兞坎辉谶M(jìn)程之間共享。


使用multiprocessing.Manager.list -


from multiprocessing import Process, Manager


def incrAt(idx, lis):

    lis[idx] += 1

with Manager() as manager:

    lis = manager.list([0, 0, 0, 0])

    p0 =  Process(target = incrAt, args=(0,lis))

將您的列表從 list 重命名為 lis 因?yàn)榱斜硎?python 的內(nèi)置


查看完整回答
反對(duì) 回復(fù) 2021-06-09
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報(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)