У меня есть задача, которая выглядит следующим образом:
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
Я создал вышеупомянутое пользовательское задание для работника Celery.Я выполнил несколько тестов, но есть кое-что, чего я не могу понять.
Переменная self.test , похоже, не используется разными процессами, поскольку только процесс с четным индексом обратился кFalse, в то время как шансы 1 остались равными 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 общими дляпроцесс или они независимы?Почему у них в памяти один и тот же адрес, который кажется независимым?