【发布时间】:2018-09-07 06:25:57
【问题描述】:
这更普遍,但我最近需要通过 Python 中的 UNIX 域套接字将通过 WebSocket API 接收到的大量消息发送到多个子进程。纯线程别无选择,因为我需要真正的并发性(希望我不会将其与并行性混淆),因此只剩下进程。在主进程和子进程之间共享内存会带来比让它们都只在自己的套接字上侦听更大的开销。
过程如下:
- 主进程中的线程监听传入的 WebSocket 消息并将其放入队列中
- 主进程忙转并检查队列中是否有新消息,如果有,则将其发送给多个(可能大约 3-4 个)子进程。
在分析上述脚本后,我发现每个子进程发送一条消息大约需要 3 毫秒。考虑到对高吞吐量的需求,我宁愿每条消息等待 3 毫秒,也不愿在 3 个子进程的情况下等待 9 毫秒。有没有可能把这个时间从O(n)缩短到O(1)?
到目前为止,我只想到了异步,但如果可能的话,我不想使用它。
【问题讨论】:
-
基本上你想发布订阅模型。你试过任何消息队列吗?例如卡夫卡..
-
3ms 很多,即使对于 Python 也是如此。您究竟是如何发送消息的?
标签: python python-multithreading python-asyncio