是不是每个戏剧演员都在一个线程上运行



我的戏剧实现遇到了障碍。我有一个无限while循环,如果满足条件,它就会中断,但我想一直呆在while循环中,直到满足条件。我知道它正在阻塞,在无限循环中无法接收任何消息,我对此感到满意,然而,似乎其他参与者直到前一个参与者退出他们的无限循环后才进入循环。这让我相信所有的演员都在同一条线上。有什么解决办法吗?

class Actor(ActorTypeDispatcher):
def logic(self):
should_break = False
while True:
print(self.id)
if should_break:
break
**insert logic to determine if should_break is True or False**

我已经实例化了100个参与者(id从1-100递增(。参与者1-5在迭代后立即输入break语句,但是当我打印id时,它被固定在6上。id=6的Actor中断循环的逻辑同时依赖于其他Actor操作。

根据Thespian的文档:

默认情况下;simpleSystemBase";使用,它在当前进程中同步运行所有Actor。虽然这个基础对于调试非常有用(请参阅调试部分(,但它并不能提供生产时通常需要的并发级别。

这表明默认情况下Thespian有效地在同一线程中运行所有参与者。

可供选择的碱基(例如multiprocTCPBase,除非您确定想要multiprocUDPBasemultiprocQueueBase,否则其他文档会将其作为要选择的碱基(可以在启动时传递给ActorSystem。默认的simpleSystemBase没有并行性。

相关内容

最新更新