首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是格林?

什么是格林?
EN

Stack Overflow用户
提问于 2018-04-05 09:46:21
回答 1查看 5.9K关注 0票数 8

我对事件不熟悉,我读过盖特姆的介绍

他们提供了一些简单的例子,但我很难理解什么是绿色is.From学习并发。

代码语言:javascript
运行
复制
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.

绿线不是线吗?如何定义同步点?有人能用例子解释吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-06 22:20:11

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

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

通过这种方式,尽管仍然是单线程,应用程序可以在任务之间切换得非常快,不断检查状态以确定它是否值得关注,同时,在等待您时还可以完成其他事情。

与由操作系统处理的多线程不同,它们需要自己的资源,并且在它们之间切换成本很高。

Gevent使通常使用线程转换为绿色的东西变得很容易。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49669212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档