【发布时间】:2014-05-21 16:08:15
【问题描述】:
我是新人w.r.t。并行处理,我想在这里寻求一些帮助。
我有一个需要在内存中复制的对象,大概是 50-100 次甚至更多。这是在生物病毒模拟器中使用的,我尝试在其中模拟病毒在细胞内的复制和爆发。
我现在使用的代码使用的是deepcopy(请不要判断),逻辑如下:
from copy import deepcopy
from random import random
from datetime import datetime
import hashlib
class Virus(object):
def __init__(self):
self.id = None
self.SetID()
def SetID(self):
random_number = str(random())
current_time = str(datetime.now())
unique_string = random_number + current_time
unique_id = hashlib.new('sha512')
unique_id.update(unique_string)
self.id = unique_id.hexdigest()
def GetID(self):
return self.id
def Replicate(self):
new_virus = deepcopy(self)
new_virus.SetID()
return new_virus
由于我的目标是生成病毒的多个副本,但我可能需要多次迭代,因此我想到了使用joblib 来加快速度。 (我可能错了,如果是这样,请纠正我!)因此,我尝试了以下代码:
h = Virus()
results = Parallel(n_jobs=2)(delayed(h.Replicate())(h) for i in range(10))
我希望结果是包含 10 种病毒的列表,但结果却是 TypeError:
TypeError: 'Virus' object is not callable
我似乎无法理解正在发生的事情。我怎样才能让它工作?
【问题讨论】:
标签: python object parallel-processing