①:gevent就是python的协程库,用monkey_patch的方式实现了python的协程,它解决的问题主要是把阻塞IO通过协程的方式转为非阻塞IO,gevent是同步非阻塞IO,而nodejs的callback是异步非阻塞IO,这样理解对吗?
②:是不是协程就是解决IO阻塞问题的?
③:python的gevent能不能像golang那样开很多协程?
④:还有更好的性能解决方案吗?
新手有些疑问,请各位大佬指点。谢谢!
①:gevent就是python的协程库,用monkey_patch的方式实现了python的协程,它解决的问题主要是把阻塞IO通过协程的方式转为非阻塞IO,gevent是同步非阻塞IO,而nodejs的callback是异步非阻塞IO,这样理解对吗?
②:是不是协程就是解决IO阻塞问题的?
③:python的gevent能不能像golang那样开很多协程?
④:还有更好的性能解决方案吗?
新手有些疑问,请各位大佬指点。谢谢!
1 回答9.4k 阅读✓ 已解决
2 回答5.1k 阅读✓ 已解决
2 回答3.4k 阅读✓ 已解决
3 回答4.4k 阅读
2 回答2.4k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
IO
是不是阻塞的和协程是没有关系的,python
本来就能支持非阻塞IO
,比如在
linux
只要用API
,更改了文件描述符的属性就可以协程
是同步的,并不是异步的,gevent
除了协程的支持还要有比如同步非阻塞IO
才行。nodejs
的底层的实现支持异步非阻塞IO
协程只是改变了写东西的方式,其实实际的东西是没有太大变化的,单线程的代码还是会在单线程上跑,
不过配合
非阻塞IO
可以更好的做东西,golang
的协程支持多线程