【问题标题】:lazy load inside multithread.pool.imap() occure multiple times instead one多线程内的延迟加载。pool.imap() 发生多次而不是一次
【发布时间】:2014-08-11 14:22:06
【问题描述】:

假设有一个类

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)

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

【问题讨论】:

    标签: python multithreading python-2.7 lazy-loading


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-08-28
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 2021-05-31
      • 1970-01-01
      • 2016-04-21
      相关资源
      最近更新 更多