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

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

如何恢復傳遞給multiprocessing.Process的函數的返回值?

如何恢復傳遞給multiprocessing.Process的函數的返回值?

慕桂英546537 2019-08-26 10:56:50
如何恢復傳遞給multiprocessing.Process的函數的返回值?在下面的示例代碼中,我想恢復函數的返回值worker。我該怎么做呢?這個值存儲在哪里?示例代碼:import multiprocessingdef worker(procnum):    '''worker function'''    print str(procnum) + ' represent!'    return procnumif __name__ == '__main__':    jobs = []    for i in range(5):        p = multiprocessing.Process(target=worker, args=(i,))        jobs.append(p)        p.start()    for proc in jobs:        proc.join()    print jobs輸出:0 represent!1 represent!2 represent!3 represent!4 represent![<Process(Process-1, stopped)>, <Process(Process-2, stopped)>, <Process(Process-3, stopped)>, <Process(Process-4, stopped)>, <Process(Process-5, stopped)>]我似乎無法在存儲的對象中找到相關屬性jobs。
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

使用共享變量進行通信。例如這樣:

import multiprocessingdef worker(procnum, return_dict):
    '''worker function'''
    print str(procnum) + ' represent!'
    return_dict[procnum] = procnumif __name__ == '__main__':
    manager = multiprocessing.Manager()
    return_dict = manager.dict()
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,return_dict))
        jobs.append(p)
        p.start()

    for proc in jobs:
        proc.join()
    print return_dict.values()


查看完整回答
反對 回復 2019-08-26
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

簡單的解決方案:

import multiprocessing

output=[]data = range(0,10)def f(x):
    return x**2def handler():
    p = multiprocessing.Pool(64)
    r=p.map(f, data)
    return rif __name__ == '__main__':
    output.append(handler())print(output[0])

輸出:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]


查看完整回答
反對 回復 2019-08-26
  • 3 回答
  • 0 關注
  • 2730 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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