为什么我需要在 gevent 中使用事件循环?
Why do I need an the event loop in gevent?
这是gevent的官方介绍。看完了,还是不知道什么是gevent。看起来 gevent 是 :
的集合
- 基于 libev 或 libuv 的快速事件循环。
- 基于 greenlet 的轻量级执行单元。
- API 重用了 Python 标准库中的概念(例如事件和队列)。
- 支持 SSL 的合作套接字
- 通过线程池、dnspython 或 c-ares 执行协作 DNS 查询。
- Monkey 补丁实用程序使第 3 方模块变得合作
- TCP/UDP/HTTP 个服务器
- 子进程支持(通过 gevent.subprocess)
- 线程池
我从未听说过 javascript 中有关事件循环的事情。事件和消息被实现为函数调用。没有循环。
while (true) {} 是错误的时期。
我的问题是:gevent中的事件循环是什么?为什么我需要它?
事件循环是每个异步事件系统的工作方式。有一个循环,检查事件并等待事情发生。当事情发生时,它 处理事件 - 即它会调用一些代码,当该代码结束时,returns 进入循环。
没有神奇的方法可以在发生某些事情时调用您的代码 - 您需要一个循环检查条件并调用正确的代码。通常循环隐藏在 library/framework 中,但这并不意味着它不存在。
这是gevent的官方介绍。看完了,还是不知道什么是gevent。看起来 gevent 是 :
的集合- 基于 libev 或 libuv 的快速事件循环。
- 基于 greenlet 的轻量级执行单元。
- API 重用了 Python 标准库中的概念(例如事件和队列)。
- 支持 SSL 的合作套接字
- 通过线程池、dnspython 或 c-ares 执行协作 DNS 查询。
- Monkey 补丁实用程序使第 3 方模块变得合作
- TCP/UDP/HTTP 个服务器
- 子进程支持(通过 gevent.subprocess)
- 线程池
我从未听说过 javascript 中有关事件循环的事情。事件和消息被实现为函数调用。没有循环。 while (true) {} 是错误的时期。
我的问题是:gevent中的事件循环是什么?为什么我需要它?
事件循环是每个异步事件系统的工作方式。有一个循环,检查事件并等待事情发生。当事情发生时,它 处理事件 - 即它会调用一些代码,当该代码结束时,returns 进入循环。
没有神奇的方法可以在发生某些事情时调用您的代码 - 您需要一个循环检查条件并调用正确的代码。通常循环隐藏在 library/framework 中,但这并不意味着它不存在。