我有一个看起来像这样的任务:
38 class Asins(Task, Application):
39
40 APPNAME = '$$$$$'
41 VERSION = '1.4'
45
48
49 ignore_result = True
50
51 def __init__(self):
52
53 super(Asins, self).__init__("root", send_email=False)
73 self.new_creation = True
self.asin = Asin()
self.test = False
82 def main(self, asin_code, asin_id, asin_country):
83 p = current_process()
84 if (p.index % 2) == 0:
85 self.test = False
86
87 print(asin_id)
88 print(self.test)
89 print(self.asin.__dict__)
90 return asin_id
我已经为芹菜工人创建了上述自定义任务。 我进行了一些测试,有些东西我听不懂。
变量 self.test 似乎没有被不同的进程共享,因为只有偶数索引变为False而赔率仍为True的进程。
但是,对于所有进程,Asin()对象在内存中都具有相同的地址:
[2019-02-26 13:14:03,379:警告/ ForkPoolWorker-12] {'_sa_instance_state':sqlalchemy.orm.state.InstanceState对象位于 0x7ff ****}
[2019-02-26 13:14:03,379:警告/ ForkPoolWorker-13] {'_sa_instance_state':sqlalchemy.orm.state.InstanceState对象位于 0x7ff ****}
我的最后一个问题是: init 中的变量实例是在进程之间共享的还是独立的?它们在内存中看起来好像是独立的,怎么会有相同的地址?