最近想通过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,但是用pip很难安装成功,可以下载后直接用pip install twisted来安装。
第一部分:Twisted理论基础 第二部分:异步编程初探与reactor模式 第三部分:初步认识Twisted 第四部分:由Twisted支持的诗歌客户端 第一个twisted支持的诗歌服务器 第一滴心血 第五部分:由Twisted支持的诗歌...
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是用于Internet应用程序的基于事件的框架,支持...twisted.trial :一个单元测试框架,可以与基于Twisted的代码很好地集成。 Twisted支持所有主要
python-efficient-development-django-tornado-flask-twisted:Python高效开发实战:Django,Tornado,Flask,Twisted原始码
多线程对爬虫的效率提高是非凡的,当我们使用python的多线程有几点是需要我们知道的:1.Python的多线程并不如java的多线程,其差异在于当python解释器开始执行任务时,受制于GIL(全局解释所),Python的线程被限制到...
Twisted是用于Internet应用程序的基于事件的框架,支持Python 2.7和Python 3.5+。它包括用于许多不同目的的模块,其中包括: twisted.web:HTTP客户端和服务器,HTML模板和WSGI服务器 twisted.conch:SSHv2和...
启动服务器创建一个 virtualenv 并安装 Twisted 包: pip install Twisted 然后执行python server_amp.py启动python客户端创建一个 virtualenv 并安装 Twisted 包: pip install Twisted 然后执行python client/...
多线程,线程是由操作系统来管理的,在多处理器系统上交错执行.这使得单个线程阻塞在某个资源的同时其他线程可以继续执行,与完成类似功能的同 在这之前先了解下什么是事件驱动编程 传统的编程是如下线性模式的: 开始--...
IO+物联网系统 通信端 物联网系统 twisted 项目简介 作品总共分为三部分,硬件端、服务器通信端(tcp/ip)、...数据库写入是写入twisted的多线程异步写入 其他文件还没完善,还在更新 TODO 加入心跳包 加入注册 加入重传
pytest-twisted-用pytest测试扭曲的代码 作者: 拉尔夫·施密特(Ralf Schmitt),凯尔·阿尔滕多夫(Kyle Altendorf),维克托·蒂特尔(Victor Titor) 版本: 1.13.2 日期: 2020-09-11 下载: 代码: ...
本文对最基础的twisted架构进行了介绍,其中重点讲解了reactor和deferred,读者能够对twisted核心有很好的认识
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 示例代码。
最近有人在twisted邮件列表中问有没有一个可以让人快速学习twisted的文档.总体的来说:这个系列不是这样的一个文档.如果你没有很多时间或者耐心的话,这个系列的文章不太适合你. 不过,如果你对异步编程了解很少的话,...
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...
python网络框架twisted教程,事件驱动编程是一个编程范式, 这个程序是由外部事件来决定。通过事件循环及当事件发生时触发回调事件的使用是它的特点。另外两种常见的编程范式是(单线程)同步与多线程编程。
Twisted Info Twisted入门教程源码
twisted资料twisted资料twisted资料