最近开始研究Python的并行开发技术,包括多线程,多进程,协程等。逐步整理了网上的一些资料,今天整理一下greenlet相关的资料。
并发处理的技术背景
并行化处理目前很受重视, 因为在很多时候,并行计算能大大的提高系统吞吐量,尤其在现在多核多处理器的时代,
所以像lisp这种古老的语言又被人们重新拿了起来, 函数式编程也越来越流行。 介绍一个python的并行处理的一个库...
分类:
编程语言 时间:
2014-09-18 11:30:03
阅读次数:
212
安装步骤:Gevent依赖libevent和greenlet,需要分别安装。1,安装 macport (如已安装,可以跳过)2,通过终端 键入:sudo port install libevent3,安装 pip : sudo easy_install pip4,安装 greenlet :sudo ...
分类:
其他好文 时间:
2014-09-09 15:06:38
阅读次数:
227
本篇将讨论gevent的两架马车-libev和greenlet如何协同工作的。gevent事件驱动底层使用了libev,我们先看看如何单独使用gevent中的事件循环。#coding=utf8
import socket
import gevent
from gevent.core import loop
def f():
s, address = sock.accept()
p...
分类:
其他好文 时间:
2014-09-08 01:04:46
阅读次数:
396
之前之所以看greenlet的代码实现,主要就是想要看看gevent库的实现代码。。。然后知道了gevent的协程是基于greenlet来实现的。。。所以就又先去看了看greenlet的实现。。。
这里就不说greenlet的具体实现了,关键就是栈数据的复制拷贝,栈指针的位移。。。
因为gevent带有自己的I/O以及定时循环,所以它对greenlet又加了一层的扩展。。。...
分类:
其他好文 时间:
2014-09-02 19:59:15
阅读次数:
288
1) greenlet - python中的协程库
1.1) 什么是协程 (Coroutine)
Coroutine Wiki
http://en.wikipedia.org/wiki/Coroutine
CoRoutine是在Thread基础上的再次切分. 每一个Process可以包含多个Thread, 每个线程包含多个CoRoutine在任何时刻, 同一个Threa...
分类:
编程语言 时间:
2014-08-27 18:51:38
阅读次数:
266
基本上读完了greenlet的源代码,代码不多,就2000行C语言的代码,其中有一部分栈寄存器的修改的代码是由汇编实现的。。。
一句话来说明greenlet的实现原理:通过栈的复制切换来实现不同协程之间的切换。。。
那么接下里来具体的来看看greenlet的代码到底是怎么实现的。。。...
分类:
编程语言 时间:
2014-08-25 21:12:16
阅读次数:
623
我们用普通同步方式扫描10个端口,用协程(异步)方式扫描1000个端口,对比时间。1、同步方式代码#encoding=utf-8
#author:walker
#date:2014-07-16
#function:使用同步方式扫描10个端口
importtime,socket,sys
deftask(addr):
sock=socket.socket(socket.AF_INET,socket.SO..
分类:
其他好文 时间:
2014-07-17 09:01:22
阅读次数:
226
1关于greenletgreelet指的是使用一个任务调度器和一些生成器或者协程实现协作式用户空间多线程的一种伪并发机制,即所谓的微线程。greelet机制的主要思想是:生成器函数或者协程函数中的yield语句挂起函数的执行,直到稍后使用next()或send()操作进行恢复为止。可以使用一个调..
分类:
其他好文 时间:
2014-05-14 19:09:00
阅读次数:
427