gpt4 book ai didi

python - 在 python 中的线程之间发送消息的推荐方法?

转载 作者:行者123 更新时间:2023-11-28 17:29:54 24 4
gpt4 key购买 nike

我已经阅读了很多关于 python 线程以及跨线程边界“对话”的各种方法。我的情况似乎有点不同,所以我想获得有关最佳选择的建议:

我没有让许多相同的工作线程等待共享队列中的项目,而是有一些主要是自治的、非守护进程的线程,它们具有唯一的标识符来处理它们的业务。这些线程不会阻塞并且通常不会相互关心。他们大部分时间都在 sleep ,并定期醒来。有时,根据某些条件,一个线程需要“告诉”另一个线程做一些特定的事情——一个 Action ——对接收线程有意义。有许多不同的操作和接收者组合,因此对每种组合使用事件似乎很笨拙。队列对象似乎是实现此目的的推荐方法。但是,如果我有一个共享队列并在只有一个接收线程的队列上发布一个项目,那么每个其他线程都需要监视队列,拉出每个项目,检查它是否已寻址,如果有则将其放回队列中它被发送到另一个线程。从队列中获取和放入项目似乎很多都是免费的。或者,我可以使用一个“路由器”线程:一个由所有人共享的队列加上一个与路由器线程共享的“普通”线程的队列。普通线程只会将项目放入共享队列中,路由器拉出每个项目,检查它并将其放入收件人的队列中。尽管如此,还有很多从队列中放入和获取元素的操作......

还有其他方法可以实现我需要做的事情吗?看起来 pub-sub 类是正确的方法,但至少据我所知,标准 python 中没有这样的线程安全模块。

非常感谢您的建议。

最佳答案

Instead of having many identical worker threads waiting for items in a shared queue

我认为这是执行此操作的正确方法。只需从上面的语句中删除 identicalshared 即可。即

having many worker threads waiting for items in queues

所以我建议使用 Celery对于这种方法。

Occasionally, based on certain conditions, one thread needs to 'tell' another thread to do something specific - an action, meaningful to the receiving thread.

这可以通过从调用任务中调用另一个 celery 任务来完成。所有任务都可以有单独的队列。

关于python - 在 python 中的线程之间发送消息的推荐方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35195348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com