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

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

多處理程序(生產(chǎn)者-消費(fèi)者)退出而不打印任何內(nèi)容 Python 3

多處理程序(生產(chǎn)者-消費(fèi)者)退出而不打印任何內(nèi)容 Python 3

慕的地6264312 2023-08-08 16:47:32
我正在嘗試創(chuàng)建共享隊(duì)列,從中獲取任務(wù)以執(zhí)行并推送執(zhí)行。但是,程序不會(huì)打印任何內(nèi)容并以代碼 0 退出。我正在使用 python 3.6 并嘗試了我在互聯(lián)網(wǎng)上找到的所有內(nèi)容,但它不起作用。也許我錯(cuò)過(guò)了什么或者做錯(cuò)了什么。請(qǐng)指出正確的方向。import multiprocessing as mpimport timedef produce(i, rate, taskQue):    print("+++ Producer:%s +++" % i)    time.sleep(0.01)    for r in range(rate):        taskQue.put(0)    time.sleep(1)def consume(i, rate, taskQue):    print("--- Consumer:%s ---" % i)    for r in range(rate):        while taskQue.empty():            print("| Consumer:%s ..." % i)            time.sleep(0.5)        time.sleep(0.01)        taskQue.get()    time.sleep(1)if __name__ == '__main__':    manager = mp.Manager()    taskQue = manager.Queue()    producerDetails = [[1, 5, taskQue], [2, 7, taskQue], [3, 2, taskQue], [4, 3, taskQue]]    producerPool = mp.Pool(processes=5)    produced = producerPool.apply_async(produce, producerDetails)    consumerDetails = [[1, 5, taskQue], [2, 5, taskQue], [3, 3, taskQue], [4, 5, taskQue]]    consumerPool = mp.Pool(processes=5)    consumed = consumerPool.apply_async(consume, consumerDetails)    producerPool.close()    producerPool.join()    consumerPool.close()    consumerPool.join()
查看完整描述

1 回答

?
一只甜甜圈

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

我已經(jīng)知道我做錯(cuò)了什么了。問(wèn)題是池工作線程無(wú)法獲取produce()和中指定的參數(shù)consume()。每個(gè)都需要三個(gè)參數(shù)。但是,producerDetails列表會(huì)作為子列表中的一個(gè)而不是三個(gè)單獨(dú)的參數(shù)consumerDetails直接傳遞到映射列表。Pool.apply_async()


為此,有Pool.starmap()一些Pool.starmap_async()函數(shù)可以正確接受當(dāng)前列表和地圖參數(shù)。


如果有人不明白我上面的意思,這里是 Python 3.6 中的工作代碼


import multiprocessing as mp

import time



def produce(i, rate, taskQue):

    for r in range(rate):

        print("+++ Producer:%s +++" % i)

        time.sleep(i * 0.01)

        taskQue.put(0)

    time.sleep(1)



def consume(i, rate, taskQue):

    for r in range(rate):

        while taskQue.empty():

            print("| Consumer:%s ..." % i)

            time.sleep(0.5)

        print("--- Consumer:%s ---" % i)

        time.sleep(i*0.01)

        taskQue.get()

    time.sleep(1)


if __name__ == '__main__':

    manager = mp.Manager()

    taskQue = manager.Queue()


    producerDetails = [[1, 5, taskQue], [2, 7, taskQue], [3, 2, taskQue], [4, 3, taskQue]]*50     

    producerPool = mp.Pool(processes=20)


    consumerDetails = [[1, 5, taskQue], [2, 5, taskQue], [3, 3, taskQue], [4, 5, taskQue]]*50

    consumerPool = mp.Pool(processes=20)


    produced = producerPool.starmap_async(produce, producerDetails)

    consumed = consumerPool.starmap_async(consume, consumerDetails)


    producerPool.close()

    producerPool.join()

    consumerPool.close()

    consumerPool.join()



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

添加回答

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