[英]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.