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

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

兩個for循環(huán)的多重處理

兩個for循環(huán)的多重處理

慕姐4208626 2023-06-06 16:28:01
我正在努力在 python (2.7) 中實現(xiàn)算法以并行化物理問題的計算。在兩個變量(假設 a 和 b)上有一個參數空間,我想在上面運行我編寫的程序 f(a,b),它返回另外兩個變量 c 和 d。到目前為止,我for在 a 和 b 上使用了兩個循環(huán)來計算 c 和 d 的兩個數組,然后將它們保存為 txt 文檔。由于參數空間比較大,每次計算其中的一個點f(a,b)的時間都比較長,如果能把我的8個CPU核全部用于參數空間掃描就好了。我已經閱讀了有關多線程和多處理的信息,似乎多處理就是我正在尋找的東西。你知道這個應用程序的一個很好的代碼示例或資源來了解我相當簡單的應用程序的多處理基礎知識嗎?
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

下面是一個示例,說明如何將 multiprocessing 與一個簡單函數一起使用,該函數接受兩個參數并返回一個包含兩個數字的元組,以及一個您要在其上進行計算的參數空間:


from itertools import product

from multiprocessing import Pool

import numpy as np


def f(a, b):

    c = a + b

    d = a * b

    return (c, d)


a_vals = [1, 2, 3, 4, 5, 6]

b_vals = [10, 11, 12, 13, 14, 15, 16, 17]


na = len(a_vals)

nb = len(b_vals)


p = Pool(8)  # <== maximum number of simultaneous worker processes


answers = np.array(p.starmap(f, product(a_vals, b_vals))).reshape(na, nb, 2)


c_vals = answers[:,:,0]

d_vals = answers[:,:,1]

這給出了以下內容:


>>> c_vals

array([[11, 12, 13, 14, 15, 16, 17, 18],

       [12, 13, 14, 15, 16, 17, 18, 19],

       [13, 14, 15, 16, 17, 18, 19, 20],

       [14, 15, 16, 17, 18, 19, 20, 21],

       [15, 16, 17, 18, 19, 20, 21, 22],

       [16, 17, 18, 19, 20, 21, 22, 23]])


>>> d_vals

array([[ 10,  11,  12,  13,  14,  15,  16,  17],

       [ 20,  22,  24,  26,  28,  30,  32,  34],

       [ 30,  33,  36,  39,  42,  45,  48,  51],

       [ 40,  44,  48,  52,  56,  60,  64,  68],

       [ 50,  55,  60,  65,  70,  75,  80,  85],

       [ 60,  66,  72,  78,  84,  90,  96, 102]])

返回p.starmap一個二元組列表,然后從中提取 c 和 d 值。


這假定您將在取回所有結果后在主程序中執(zhí)行文件 I/O。


附錄:


如果p.starmap不可用(Python 2),那么您可以更改函數以采用單個輸入(2 元素元組):


def f(inputs):

    a, b = inputs

    # ... etc as before ...

然后在上面的代碼中使用p.map代替。p.starmap


如果不方便更改函數(例如它也從其他地方調用),那么您當然可以編寫一個包裝函數:


def f_wrap(inputs):

    a, b = inputs

    return f(a, b)

并改為調用它。


查看完整回答
反對 回復 2023-06-06
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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