多线程中的延迟加载.pool.poolp()多次出现而不是一次

时间:2014-06-20 18:51:45

标签: python multithreading python-2.7 lazy-loading

让我们假设有一个班级

class Helper(object):
 @property  
 def lazy_prop(self):
   if not self.__model:
      self.__model = init()
 return self.__model
...

我有功能

def action(data):
 #handle some  actions which using Helper

我有一些数据,需要使用action这样的函数来处理

data = ['bla-bla', 'foo-foo']
pool = Pool()
pool.imap(action, data)

问题是懒惰属性会多次初始化,而不是单个。为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用multiprocessing,如果您生成多个作业,则Helper.lazy_prop将在每个Process中初始化。