簡體   English   中英

Python:如何使用多重處理來加快對類實例的操作?

[英]Python: How can i use multiprocessing to speed up operating on class instances?

例如:

instances = [ClassName() for i in range(no_inst)]
for data in dataset:
    for inst in instances:
        inst.dosomething(data)

注意:實例不會修改數據,因此實例之間無需進行通信。

我所知道的最簡單的方法是使用multiprocessing.Pool.map ,就像使用內置的map 您只需要編寫一個函數來完成您想要完成的任務,它就可以處理所有並行性:

import multiprocessing as mp

instances = [ClassName() for i in range(no_inst)]

def dosomething(inst):
    for data in dataset:
        inst.dosomething(data)

num_procs = 4 #however many processors you'll use
pool = mp.Pool(num_procs)
pool.map(dosomething,instances)

有幾個陷阱- lambda ,因為它們不是與pickle例如功能將不會在這里工作。 這也將返回列表None (因為這是dosomething回報) -通常我不喜歡使用列表推導或map的副作用,但是我放松對我的立場,當它涉及到多處理器只是因為它是這么容易

您可以使用threading接口創建一個滿足dosomething(data)Thread類。 您可以為每個循環啟動多個線程,調用run()啟動它們。 建議將它們放入列表,以便您可以檢查它們的狀態,直到全部完成。

暫無
暫無

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

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