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

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

為什么輸出顯示一個進(jìn)程執(zhí)行了多個任務(wù)

為什么輸出顯示一個進(jìn)程執(zhí)行了多個任務(wù)

慕妹3146593 2022-05-24 16:21:34
import multiprocessingdef send_request(data):    lock.acquire()    print(data,' ',os.getpid())    lock.release()def init(l):    global lock    lock = lif __name__ == '__main__':    data_list = ['data1', 'data2', 'data3']    lock = multiprocessing.Lock()    pool = multiprocessing.Pool(8, initializer=init, initargs=(lock,),maxtasksperchild=1)    pool.map(send_request, range(10000))    pool.close()    pool.join()程序的部分輸出如下9995   158249996   158249997   158249998   158249999   15824根據(jù)maxtasksperchild的設(shè)置,應(yīng)該是每個進(jìn)程只執(zhí)行一個任務(wù),為什么輸出顯示一個進(jìn)程執(zhí)行了多個任務(wù)。但是,當(dāng)我將語句從 更改為 時pool.map(send_request, range(10000)),pool.map(send_request, range(9))輸出顯示 maxtasksperchild 設(shè)置正常。0   117761   54242   109843   158484   110005   167286   44807   120168   12936Pythonpython-多處理
查看完整描述

2 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊

這對我來說看起來是預(yù)期的行為。根據(jù)參考文檔here,函數(shù)Pool.map()

將可迭代對象分割成多個塊,將它們作為單獨的任務(wù)提交給進(jìn)程池。這些塊的(近似)大小可以通過將 chunksize 設(shè)置為正整數(shù)來指定。

這顯然允許選項send_request為同一進(jìn)程使用不同的參數(shù)多次調(diào)用。通過chunksize=1應(yīng)該可以解決這個問題。


查看完整回答
反對 回復(fù) 2022-05-24
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊

你會在這里找到一個等效的問題

簡而言之,多處理是一組多個輸入?yún)?shù),出于性能原因task,這些參數(shù)一起發(fā)送(按大小批量發(fā)送)。chunksize因此,worker 最多將執(zhí)行maxtaskperchild * chunksize函數(shù)調(diào)用。

可以在pool.map調(diào)用中指定塊大?。?/p>

pool.map(send_request, range(1000), chunksize=1)


查看完整回答
反對 回復(fù) 2022-05-24
  • 2 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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