`
iyuan
  • 浏览: 471762 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

gevent 任务的持续追加和执行(续·真)

阅读更多
之前写过一篇通过队列、池来持续追加任务的方式:http://iyuan.iteye.com/blog/781168

今个儿重新咀嚼了下,发现gevent的pool似乎可以达到真正意义上的任务追加。

这里先重新简单的阐明下“任务”这个概念,相对于上次那篇,相对宏观了些:
就是Greenlet!(不熟悉的可以参看下gevent的文档http://www.gevent.org/contents.html)

先实例化:
g = pool.Pool()

通过g.add(),g.spawn(),就可以持续追加任务入池,在建立pool时,可以设置size,不过这里似乎有个bug,设定了size后,似乎不能在子任务中再添加新任务进任务表。

下面给个demo:
from gevent import pool
g = pool.Pool()
def a():
    for i in xrange(100):
        g.spawn(b)
def b():
    print 'b'
g.spawn(a)
g.join()


相较于上次那篇,可以做更繁复的事了,不过,根本上而言,一次做一件事 才是王道啊。

0
0
分享到:
评论

相关推荐

    python Gevent程序员指南.pdf

    - **定义**:Gevent 是一个基于 libev 的并发库,为 Python 提供了一个简洁高效的 API 来处理并发和网络相关的任务。 - **目标用户**:本书面向具备中级 Python 基础的程序员,不需要对并发编程有深入了解即可开始...

    Gevent指南.pdf

    Gevent是一个基于libev的Python并发库,它让程序员能够以更简洁的方式处理并发和网络相关任务。它提供的API使得并发编程对Python开发者更加友好。Gevent特别适合那些对中级Python有所了解但并发编程经验不多的开发者...

    Python-MrQueue一个Python的分布式worker任务队列使用Redis和gevent

    这个框架设计的主要目标是为了解决大型项目中的任务调度、异步执行和工作负载均衡问题,使得开发者能够更高效地管理后台任务,提高系统的响应速度和整体性能。 首先,让我们详细了解一下Redis。Redis是一种开源的、...

    gevent文档

    gevent在greenlet的基础上,通过引入事件循环和猴子补丁机制,进一步增强了greenlet的并发能力,使其能够更好地适应网络I/O密集型任务。通过gevent,开发人员可以轻松地编写出高效、可扩展的网络应用程序,同时保持...

    python-gevent-20.9.0.tar.gz

    Gevent的协程主要依赖于`gevent.hub`和`gevent.greenlet`模块,其中`gevent.greenlet`封装了Greenlet对象。 5. **使用Gevent编写协程代码** 下面是一个简单的Gevent协程示例,展示了如何并发下载多个网页: ```...

    gevent 1.0.2

    - **超时和定时器(Timeouts and Timers)**:`gevent`提供了设置超时和定时任务的API,允许在特定时间后切换到其他greenlet或执行回调。 **4. gevent的主要特性** - **网络I/O**:支持TCP、UDP、Unix域套接字等...

    gevent和pip的安装包

    在windows下安装gevent的安装包,安装方法很简单。具体参考我在csdn的博客。 http://blog.csdn.net/ruguokeyi110/article/details/47725545

    python gevent==21.8.0

    而Gevent通过使用greenlet(一种轻量级的线程实现)来调度执行,使得多个任务可以在同一个线程中交替运行,提高了系统资源的利用率。 Odoo是另一个与Gevent关联的重要概念。Odoo是一个开源的企业资源规划(ERP)...

    Python使用grequests(gevent+requests)并发发送请求过程解析

    5. grequests的引入:grequests是基于gevent和requests的结合体,它允许开发者以非常简单的方式来实现并发请求。grequests在内部使用gevent库来实现非阻塞IO操作,从而达到并发请求的效果。 6. grequests的基本使用...

    模块gevent压缩包

    总之,`gevent`是一个强大的并发工具,它通过协同多任务和I/O复用,提高了Python应用的并发性能,使得编写高性能的网络服务变得简单。在理解并熟练使用`gevent`后,开发者可以构建出高效的异步应用程序。

    gevent开发指南

    Greenlets可以独立地管理状态和执行流程,可以通过同步原语(如锁、信号量等)进行协作。这些轻量级的线程可以通过gevent提供的API来创建和管理,例如gevent.joinall,它可以同步等待一组Greenlets的结束。 协程...

    gevent-21.12.0-cp39-cp39-win_amd64.whl.zip

    总的来说,`gevent-21.12.0-cp39-cp39-win_amd64.whl.zip`是一个针对Python 3.9的Windows x64平台的`gevent`库更新版本,提供了高效并发处理的能力,适用于网络编程、Web服务和异步任务场景。通过正确的安装和使用,...

    Mr. Queue - 使用 Redis 和 gevent 的 Python 分布式工作任务队列.zip

    它的目标是像RQ一样简单美观,同时具有接近Celery 的性能MRQ 最初是在定价助理 (Pricing Assistant)上开发的,其初始功能集满足具有异构作业(IO 密集型和 CPU 密集型、大量小任务和少量大任务)的工作队列的需求。...

    gevent-20.12.1-cp36-cp36m-win_amd64.whl.zip

    《gvent:Python异步I/O库的深度解析》 在Python编程中,高效地处理并发任务是一项...无论是在构建网络服务、爬虫还是其他需要处理大量并发请求的场景,`gevent`都能发挥其独特的优势,提升代码的执行效率和响应速度。

    gevent-0.13.8.tar.gz

    《gvent 0.13.8:异步编程与协程的魅力》 在Python的世界里,异步编程和并发处理是提升程序性能的关键技术。...通过理解和掌握`gevent`,你将能够在Python世界中更好地驾驭并发编程,提升代码的执行效率和响应速度。

    gevent gz包

    Greenlet是一种轻量级的协程,它是Python标准库中的`threading.local`和`stackless`模块的结合体,可以在同一进程中实现并行执行。与传统的线程相比,greenlet的切换开销极小,这使得在高并发场景下,greenlet的性能...

    gevent-1.4.0-cp35-cp35m-win_amd64.whl.zip

    `gevent`就是基于这些greenlet来管理并发任务,通过 monkey-patching(猴子补丁)技术,将许多标准库中的阻塞I/O操作替换为非阻塞版本,从而实现高效的异步执行。 3. **gevent-1.4.0版本** 这个版本的`gevent`引入...

    python安装gevent需要的pip文件.zip

    协程是一种编程概念,它允许在单个线程中执行多个并发任务,而无需频繁切换上下文。这相比于传统的多线程或多进程模型,能显著提高效率,特别是在I/O操作(如网络通信)上。 `gevent`通过 monkey-patching(猴子...

    greenlet及gevent库

    `greenlet`和`gevent`就是两个用于实现协程(coroutine)的库,它们为Python提供了轻量级线程(lightweight thread)的功能,使得在单个线程内可以并发执行多个任务,从而提高了程序的执行效率。 `greenlet`是...

    gevent-21.12.0-cp37-cp37m-win_amd64.whl.zip

    - **协程(Coroutines)**: gevent 提供了一个基于 greenlet 的轻量级协程模型,它们可以在单个线程中并发执行,使得程序在处理 I/O 时可以切换到其他任务,从而提高效率。 - **事件循环(Event Loop)**: gevent 的...

Global site tag (gtag.js) - Google Analytics