什么是格林莱特?

2024-05-16 04:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是gevent的新手,我读过gevent的介绍

他们提供了简单的例子,但我很难理解格林莱特是什么是。从学习并发性。在

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.

青菜不是线? 同步点是如何定义的?有人能举例说明吗?在


Tags: inthatgeventarelightweight例子veryus
1条回答
网友
1楼 · 发布于 2024-05-16 04:35:02

同步编程一次只能做一件事。因此,当一个数据库查询正在运行时,其他人(比如通过一个web框架打开一个网页)必须等待它完成。在

Gevent通过使用上下文切换和事件使其异步。这是什么意思?就这样想吧。你有一个等待事情发生的队列,同时gevent说,好吧,你可以等等,我要转移到下一个任务,在我等待你完成的时候开始做一些事情(比如数据库读取,或者等待用户输入),当你完成后,当我回顾我的队列,你说你准备好下一步时,我集中精力为你准备的。在

通过这种方式,尽管仍然是单线程的,应用程序可以在作业之间快速切换,不断检查状态,看看是否值得关注,同时,其他事情也可以在等待您的时候完成。在

与由操作系统和heavy处理的多线程不同,它们需要自己的资源,并且在这些线程之间切换非常昂贵。在

Gevent使得将通常使用线程的东西转换为greenlets变得容易。在

相关问题 更多 >