我是 gevent 的新手。我已经阅读了gevent 的介绍
他们提供了简单的例子,但我很难理解什么是greenlet。来自学习并发。
Greenlets are a very lightweight coroutine written in C that
are cooperatively scheduled. They provide us with a very lightweight thread-
like object that allows us to achieve concurrent execution within our Python
programs without incurring the cost of spinning up multiple threads.
Run Code Online (Sandbox Code Playgroud)
greenlets不是线程?同步点是如何定义的?有人可以举例说明吗?
同步编程一次只能做一件事。因此,当数据库查询正在运行时,其他所有人(比如通过 Web 框架拉出网页)都必须等待它完成。
Gevent 通过使用上下文切换和事件使其异步。这是什么意思?像这样想。你有一个等待事情发生的队列,同时 gevent 说,好的,你可以等待,我将转到下一个任务并开始做我等待你完成的事情(比如数据库读取,或等待用于用户输入),当您完成后,当我返回我的队列并且您说您已准备好进行下一步时,我会为您专注于此。
这样,虽然仍然是单线程的,但应用程序可以超快地在作业之间切换,不断检查状态以查看它是否值得关注,同时,在等待您的同时可以完成其他事情。
与由操作系统处理且繁重的多线程相反,它们需要自己的资源,并且在它们之间切换很昂贵。
Gevent 可以轻松地将通常使用线程的内容转换为 greenlets。
| 归档时间: |
|
| 查看次数: |
3440 次 |
| 最近记录: |