如果我在一个线程中监听websocket并在另一个线程中运行一个函数,则可能会错过消息

时间:2018-05-16 20:52:44

标签: python multithreading websocket python-multithreading gil

标题说真的。我在Linux EC2实例上运行程序,有4个线程。其中三个正在侦听不同的websockets,最后一个是webscraping,并在需要时调用一组其他函数。

如果GIL归第四个线程所有(即它当前正在通过单核运行计算),是否有可能被侦听的线程“错过”了websocket消息?

我开始认为这是不可能的,但却不明白为什么。我环顾四周,但收效甚微。

1 个答案:

答案 0 :(得分:0)

实际上,即使您的应用程序被完全阻止,也可以通过安排或者只是暂停操作系统来排队传入的网络消息。您可能会丢失消息,如果TCP缓冲区开始溢出,我认为在您的情况下不太可能。您可以通过故意在第4个线程中休眠一段时间来测试您的想法,看看是否丢弃了消息。