У меня есть следующие классы, например:
class CalculatorA:
def functionA(self):
#some calculations
class CalculatorB:
def functionB(self):
#some calculations
class CalculatorC:
def functionC(self):
#some calculations
class Aggregator:
def __init__(self, objectA, objectB, objectC):
self.objectA = objectA
self.objectB = objectB
self.objectC = objectC
def aggregator_function(self):
self.objectA.functionA()
self.objectB.functionB()
self.objectC.functionC()
class Worker(threading.Thread):
def __init__(self,
objectA,
objectB,
objectC):
threading.Thread.__init__(self)
self.objectA = objectA
self.objectB = objectB
self.objectC = objectC
def run(self):
agregator = Aggregator(self.objectA,
self.objectB,
self.objectC)
agregator.aggregator_function()
Моя main()
функция:
def main():
objectA = CalculatorA()
objectB = CalculatorB()
objectC = CalculatorC()
worker = Worker(objectA, objectB, objectC)
worker.start()
Я создаю объекты CalculatorA, CalculatorB, CalculatorC
классов в функции main()
и передаюпеременные в качестве параметров для конструктора Worker
. Объект класса Worker
сохраняет их. Позже он передает переменные в конструктор объекта Aggregator
в функции run()
. Он создает объект Aggregator
в отдельном потоке вычислений. Aggregator
вызывает функции functionA(), functionB(), functionC()
.
У меня вопрос, в каком потоке будут выполняться вычисления функций functionA(), functionB(), functionC()
? Будут ли они выполняться в рабочем потоке или в основном потоке? Стоит ли использовать threading.local
хранилище, если в основном потоке?