Я пытаюсь использовать Thespian (https://thespianpy.com/doc/),, библиотеку Python для актерской модели, и, в частности, я пытаюсь использовать функциональность "труппы". Насколько я понимаю, декоратор труппы действует какпланировщик для запуска нескольких актеров до указанного max_count, при этом каждый актер работает параллельно.Функция труппы применяется в качестве декоратора в моем классе актеров:
@troupe(max_count = 4, idle_count = 2)
class Calculation(ActorTypeDispatcher):
def receiveMsg_CalcMsg(self, msg, sender):
self.send(sender, long_process(msg.index, msg.value, msg.status_cb))
Я хотел бы настроить max_count во время выполнения, вместо времени разработки. Я признаю, что мои базовые знания о декораторах слабые.
Как я могу передать значение max_count во время выполнения?
Я прошел через это, но яЯ все еще в неведении:
Позволяет ли python передавать динамические переменные декоратору во время выполнения?
http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/
Задо сих пор я пытался это сделать, но декоратор не применялся (т.е. он действовал так, как будто декоратора не было). Я прокомментировал реализацию @troupe над классом, этим методом (в том числе с переменной)работает нормально.Этот подход не таков:
# @troupe(max_count=cores, idle_count=2)
class Calculation(ActorTypeDispatcher):
def receiveMsg_CalcMsg(self, msg, sender):
self.send(sender, long_process(msg.index, msg.value, msg.status_cb))
def calculate(asys, calc_values, status_cb):
decorated_class = troupe(max_count=5, idle_count=2)(Calculation)
calc_actor = asys.createActor(decorated_class)
В функции calculate
есть и другие вещи, но это в значительной степени просто бухгалтерский учет.