Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4468850
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类: Python/Ruby

2015-01-05 22:01:34

原文地址:http://effi2.me/blog/2014/07/07/gevent-core-event/

本文仅仅介绍gevent.core.loop类所涉及的接口使用,这些接口是gevent中核心greenlet(Hub)运行的基础。

gevent.core封装了libev的代码,在源码中以core.so文件存在。

有两种方式可获取loop对象:

  • 通过gevent.get_hub().loop获取
  • 直接使用loop类来获取
 from gevent import core
loop = core.loop() 

loop events

MAXPRI None

默认值是2,不知道是干什么用的

MINPRI None

默认值是-2, 不知道是干什么用的

WatcherType None

未知

activecnt None

未知

async()

未知

backend None

事件机制类型,epoll kqueue

backend_int None

未知

break_()

未知

child()

未知

default None

未知

depth None

未知

destroy()

未知

error_handler None

未知

fileno()

socket 文件描述符

fork()

未知

handle_error()

未知

idle()

未知

install_sigchld()

未知

io()

创建socket文件的观察器.

1表示读数据状态,2表示写数据状态 代码片段

 _watcher = self.loop.io(self.socket.fileno(), 1)
_watcher.start(self._do_read) 

iteration None

未知

now()

当前时间

origflags None

未知

origflags_int None

未知

pendingcnt None

未知

prepare()

未知

ptr None

未知

ref()

未知

reinit()

未知

run()

ev_run是libev的核心,

他主要做了五件事情:

1.更新更改的FD事件

2.进行必要的sleep

3.backend_poll收集pending的IO事件

4.收集pending的timer事件

5.调用所有pending的事件

run_callback()

将一个函数注册到io事件队列中

 def hellowrold():
    print 'hello world'

gevent.get_hub().loop.run_callback(hellowrold)
gevent.get_hub().loop.run() 

以上代码会立刻执行hello world

sig_pending None

未知

sigfd None

未知

signal()

未知

stat()

未知

timer()

创建一个事件定时触发器,会定时执行一个callback函数

 import gevent
import time

def hellowrold():
    print 'hello world', time.time()

gevent.get_hub().loop.run_callback(hellowrold)

timer = gevent.get_hub().loop.timer(3.0)
timer.start(hellowrold)

gevent.get_hub().loop.run() 

连续两次注册helloworld函数,第一次是立刻执行的,第二此是在3秒后执行

unref()

未知

update()

未知

verify()

未知

 Jul 7th, 2014  gevent

阅读(1600) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~