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

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

如何在python中完成多處理部分后運行代碼

如何在python中完成多處理部分后運行代碼

繁花不似錦 2022-09-27 16:20:29
我對python的多處理非常陌生。目前,我正在嘗試使用多處理進行數據生成(10次),然后做一些后續工作。我當前的代碼是這樣的:def data_generation(param1, param2, param3):    main function    np.save(....)for i in np.arrange(10):   if __name__ == '__main__':   ratio = np.arange(0.3, 1.4, 0.1)   pool = Pool(os.cpu_count())   param1 = 1   param2 = 2   func = partial(data_generation, param1, param2)   _ = pool.map(func, param3=ratio)   pool.close()   pool.join()   ### then I would like to read the generated data and do analysis   result = np.load(..)我的想法是,我想做一件作品10次。每次,我都會生成數據,進行分析,存儲結果,然后再次執行。對于數據生成部分,需要將一個參數從 0.3 更改為 1.4。這就是我想要使用多處理的地方。問題是每次當我運行代碼時,看起來python跳過了數據生成部分,直接轉到了分析部分。那么,這項任務的正確邏輯是什么呢?我希望數據分析部分在數據生成部分之后被夸大。
查看完整描述

1 回答

?
月關寶盒

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

您可以使用期望元組的元組,這些元組是函數的參數。在這里,為了顯示步驟,我提前生成了元組并將其存儲在func_arg_tuple中。pool.starmap


此外,無需在data_generation函數中保存結果的中間步驟。只需返回要處理的值,當池的工作完成時,它將在值中。results


import multiprocessing


def data_generation(param1, param2, param3):

    # sample processing function - add your own

    return np.random.normal(param3, param1, param2)


param1 = 1

param2 = 2


with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:

    func_arg_tuple = tuple((param1, param2, ratio) for ratio in np.arange(0.3, 1.4, 0.1))

    results = pool.starmap(data_generation, func_arg_tuple)


>>>results

[array([-0.89459092,  2.03727378]),

 array([-0.79459092,  2.13727378]),

 array([-0.69459092,  2.23727378]),

 array([0.57145244, 0.75501116]),

 array([ 2.40776746, -0.17882601]),

 array([0.77145244, 0.95501116]),

 array([-0.88291467,  1.3072801 ]),

 array([0.97145244, 1.15501116]),

 array([0.0123457 , 2.25667152]),

 array([2.90776746, 0.32117399]),

 array([3.00776746, 0.42117399])]


查看完整回答
反對 回復 2022-09-27
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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