`

twisted:调用deferredlist多线程并发执行任务然后收集结果

阅读更多

最近想通过twisted实现多线程并发去执行一件耗时的事,然后等这些线程都执行完毕后收集他们的结果做一些事。查了下twisted的文档发现deferredlist正好就是做这中事的。附上例子。。。耗时的事用time.sleep来代替了

 

#! /usr/bin/env python
# -*- coding: utf-8 -*-
#Author:pako
#Email/gtalk:zealzpc@gmail.com
from twisted.python import threadable
threadable.init(1)
from twisted.internet import threads, reactor,defer
from random import randint
import time
    
def run():
    
    result=[]
    
    def listCallback(result):  
        """
                    拿到所有线程执行完返回的结果
        """
        result=[r[1] for r in result]
        print result
        print "deferlist result =", result
    
    def doSomeLongTimeThing(sleeptime=0):  
        """ 
                    每个线程同时做的耗时的事
        """  
        print sleeptime
        time.sleep(sleeptime)
        return sleeptime
    
    deferlist=[]
    #创建deferlist中的deferred
    for i in range(10):
        d = threads.deferToThread(doSomeLongTimeThing,sleeptime=randint(3,5))
        deferlist.append(d)
    #创建deferredlist
    dl = defer.DeferredList(deferlist)
    #给deferredlist添加回调函数
    dl.addBoth(listCallback)
    print "1st line after the addition of the callback"  
    print "2nd line after the addition of the callback"  

if __name__ == '__main__':  
    run()
    reactor.run()  
 
分享到:
评论

相关推荐

    python多线程库Twisted

    python多线程库Twisted,许多python库都以来twisted,但是用pip很难安装成功,可以下载后直接用pip install twisted来安装。

    Twisted系列教程.pdf

    第一部分:Twisted理论基础 第二部分:异步编程初探与reactor模式 第三部分:初步认识Twisted 第四部分:由Twisted支持的诗歌客户端 第一个twisted支持的诗歌服务器 第一滴心血 第五部分:由Twisted支持的诗歌...

    Twisted与异步编程入门

    Twisted与异步编程入门

    flask-twisted:简单整合Flask和Twisted

    简单整合Flask和Twisted 安装 pip install Flask-Twisted 最小的应用 from flask import Flask from flask . ext . twisted import Twisted app = Flask ( __name__ ) twisted = Twisted ( app ) ... if __name__ ==...

    twisted:https

    扭曲的 有关此版本中更改的信息,请参阅文件。 这是什么? Twisted是用于Internet应用程序的基于事件的框架,支持...twisted.trial :一个单元测试框架,可以与基于Twisted的代码很好地集成。 Twisted支持所有主要

    python-efficient-development-django-tornado-flask-twisted:Python高效开发实战:Django,Tornado,Flask,Twisted原始码

    python-efficient-development-django-tornado-flask-twisted:Python高效开发实战:Django,Tornado,Flask,Twisted原始码

    python爬虫之多线程、多进程爬虫

    多线程对爬虫的效率提高是非凡的,当我们使用python的多线程有几点是需要我们知道的:1.Python的多线程并不如java的多线程,其差异在于当python解释器开始执行任务时,受制于GIL(全局解释所),Python的线程被限制到...

    Twisted-19.10.0-cp38-cp38.rar

    Twisted是用于Internet应用程序的基于事件的框架,支持Python 2.7和Python 3.5+。它包括用于许多不同目的的模块,其中包括: twisted.web:HTTP客户端和服务器,HTML模板和WSGI服务器 twisted.conch:SSHv2和...

    Twisted-AMP-bidirectional:Twisted AMP 双向协议的基本实现

    启动服务器创建一个 virtualenv 并安装 Twisted 包: pip install Twisted 然后执行python server_amp.py启动python客户端创建一个 virtualenv 并安装 Twisted 包: pip install Twisted 然后执行python client/...

    基于gevent开发的模拟twisted的轻型的异步网络框架.rar

    多线程,线程是由操作系统来管理的,在多处理器系统上交错执行.这使得单个线程阻塞在某个资源的同时其他线程可以继续执行,与完成类似功能的同 在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--...

    iotSystem-twisted:IO+物联网系统 通信端

    IO+物联网系统 通信端 物联网系统 twisted 项目简介 作品总共分为三部分,硬件端、服务器通信端(tcp/ip)、...数据库写入是写入twisted的多线程异步写入 其他文件还没完善,还在更新 TODO 加入心跳包 加入注册 加入重传

    pytest-twisted:用pytest测试扭曲的代码

    pytest-twisted-用pytest测试扭曲的代码 作者: 拉尔夫·施密特(Ralf Schmitt),凯尔·阿尔滕多夫(Kyle Altendorf),维克托·蒂特尔(Victor Titor) 版本: 1.13.2 日期: 2020-09-11 下载: 代码: ...

    中文Twisted入门教程

    本文对最基础的twisted架构进行了介绍,其中重点讲解了reactor和deferred,读者能够对twisted核心有很好的认识

    sockjs-client-twisted:Twisted-Python 的 SockJS 客户端

    SockJS-Client-Twisted Twisted-Python 的 SockJS 客户端 安装 pip install txsockjs_client 应用 from txsockjs_client import SockJS from twisted . internet import defer , reactor @ defer . ...

    book_twisted:这是来自 O'REILLY 的 TWISTED 示例代码

    book_twisted 这是来自 O'REILLY 的 TWISTED 示例代码。

    Python twisted教程

    最近有人在twisted邮件列表中问有没有一个可以让人快速学习twisted的文档.总体的来说:这个系列不是这样的一个文档.如果你没有很多时间或者耐心的话,这个系列的文章不太适合你. 不过,如果你对异步编程了解很少的话,...

    Twisted Network Programming Essentials 2nd Edition

    Twisted Network Programming Essentials 2nd Edition BOOK DESCRIPTION Get started with Twisted, the event-driven networking framework written in Python. With this introductory guide, you’ll learn the...

    Twisted系列教程等

    python网络框架twisted教程,事件驱动编程是一个编程范式, 这个程序是由外部事件来决定。通过事件循环及当事件发生时触发回调事件的使用是它的特点。另外两种常见的编程范式是(单线程)同步与多线程编程。

    twisted入门教程源码

    Twisted Info Twisted入门教程源码

    twisted资料twisted资料

    twisted资料twisted资料twisted资料

Global site tag (gtag.js) - Google Analytics