python 里面的事件编程
记得第一次接触python的协程是在看scrapy的代码的时候,很久远的事情了。后来又断断续续的的接触了一些乱七八糟关于协程的文章代码,最后接触了golang,觉得golang语言级别支持协程超级赞,然后看了很长时间的golang的runtime的原理,以及对应的调度机制,虽然不敢说对于协程有很清晰的了解,但是对于协程这个概念也可以回答一些入门级的问题。
其实想想,抛开协程和线程的区别,抛开操作系统的调度以及语言层面的任务调度,协程和线程有神马区别吗?感觉好像确实没什么区别,作为一个程序员,应该理解以及掌握的无非就是线程/协程之间的通讯,消息队列这方面的事情。如果把协程比作一个个计算机的单个节点,那么应用了协程的进程不就是一个分布式吗?那么协程的思想和分布式的思想从本质上的区别又是什么呢?水平有限, 无法给予解答。
记得前两天被一个人问我python事件编程的东西,当时我是懵逼的,因为不知道这个词是什么意思,然后果断被鄙视了。然后回去查了下,选了个gevent库学习了下,下面是参照golang的的学习笔记, 记录一些入门的问题。
1: 创建并运行协程
golang里面: go func(interface {})
python 的 gevent: gevent.swap(func(*args, **kwargs)).join()
由于go 对协程的语言层面的支持, 这里显得go会简单一点, python用gevent包的话需要打一个猴子补丁, 将对应的标准库来进行替换, 比如替换socket库的话: