簡體   English   中英

如何為 python 中的 class function 並行運行 for 循環?

[英]How can I run the for loop in parallel for a class function in python?

我有一個 class My_mechanism ,其中包含 function velocity_params ,它將結果寫入csv文件。 我需要在某個范圍內迭代,但迭代非常慢(一次只使用一個 CPU 內核)。 有什么方法可以加快這個過程嗎? 當前代碼執行大約需要 10 分鍾,最后,我需要迭代My_mechanism(i,j,k,l,2)中的所有i,j,k,l

from crankshaft import *
import multiprocessing
import time

initial_time = time.time()

for i in range(10,20):
    m = My_mechanism(i,50,20,14,2)
    try:
        m.velocity_params()
    except Exception:
        continue

print("Processing time : ",time.time()-initial_time,"s")

您可以使用已編譯的 C 模塊(例如 numpy)來進行繁重的數學計算,因為 numpy 將為您對導入的向量進行並行操作,或者您可以使用多處理庫。

import multiprocessing as mp

parallelism = 4

p = mp.pool(parallelism)

res = p.map(my_mechanism, [x for x in range(10,20)])

盡管您需要以其他方式處理多個輸入參數才能使用 map function,但默認情況下它只需要一個。

通常寫入 csv 文件需要很長時間。 我建議事先運行所有數據處理(這可以並行化)並在最后編寫 output。

如果您想要更詳細的答案,請更具體地了解您使用什么 csv 編寫器,您的數據是什么等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM