V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
alsotang
V2EX  ›  Python

并发学习笔记,希望各位指导一下

  •  
  •   alsotang ·
    alsotang · 2012-07-07 19:33:59 +08:00 · 5093 次点击
    这是一个创建于 4525 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原文地址是:
    http://fxck.it/2012/07/07/%E5%B9%B6%E5%8F%91%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/

    ----Overview----

    有几个与并发有关的概念,它们分别是: 多进程 多线程 微线程 协程 纤程。
    其中,协程,其实就是纤程的别称,也是微线程的别称。协程有时也被叫做用户态线程。
    一个进程可以包括多个线程,一个线程可以包括多个协程。
    进程的切换开销比线程大,线程的比协程大。
    进程和线程都不懂的话,就不用再看下去了。而协程是最近很火的一个概念。代表技术就是Python的gevent咯。
    某些文章说道:
    记得N年前看过一篇论文说服务器的发展是多进程=>多线程=>异步=>协程
    References:
    http://blog.csdn.net/chgaowei/article/details/7237673
    http://gashero.iteye.com/blog/442177
    http://www.tumblr.com/tagged/coroutine?before=1330310936

    ----各门语言与特定的实现----

    Node.js的并发性能很好,不过它不是利用了线程或协程。它就是上面所说的那个发展过程中的异步:将每个事件都绑定一个函数,事件被触发时自动调用。属于异步I/O。
    Go的goroutine据说比较接近协程。但与协程和线程的概念都不是很像,所以一般不翻译这个goroutine这个词。
    Python的yield就是协程的一种实现。但我不懂Stackless到底在这之上还做出了什么改变,或许是Python的yield所提供的功能实在太简单,所以Stackless提供了更多与协程有关的API。
    有资料说Ruby的yield是种简单的协程,?只适合简单的两个程序间的合作。而Fiber库对于协程的支持就比较好了。

    ----Python相关的一些库----

    twisted, gevent, greenlet, envetlet.
    twisted跟Node.js一样。官网介绍是:Twisted is an event-driven networking engine written in Python。
    event-driven就是事件驱动了嘛。
    gevent的介绍是:gevent based on greenlet and libevent.
    greenlet是greenlet is a spin-off of Stackless。这么说greenlet来自Stackless,是Stackless的一个子集。
    libevent,由名字判断是C语言的某个Linux下的库。介绍是:Currently, libevent supports /dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2), and epoll(4).
    greenlet应该是libevent的一个Python包装(我猜的)。
    eventlet会被拿来与gevent直接比较,见:http://ampzaa.blog.163.com/blog/static/14086966620104912833465/
    所以他们应该是两个不同的Python协程库。
    End
    1 条回复    1970-01-01 08:00:00 +08:00
    greenblue007
        1
    greenblue007  
       2014-03-05 22:00:16 +08:00
    总结得不错!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.