pythonqueue线程_python基于queue和threading实现多线程下载实例
本文实例讲述了python基于queue和threading实现多线程下载的方法,分享给大家供大家参考。具体方法如下:
主代码如下:
#download worker
queue_download = Queue.Queue(0)
DOWNLOAD_WORKERS = 20
for i in range(DOWNLOAD_WORKERS):
DownloadWorker(queue_download).start() #start a download worker
for md5 in MD5S:
queue_download.put(md5)
for i in range(DOWNLOAD_WORKERS):
queue_download.put(None)
其中downloadworkers.py
类继承 threading.Thread,重载run方法..在__init__中调用threading.Thread.__init__(self),
在run方法中实现耗时的操作
import threading
import Queue
import md5query
import DOM
import os,sys
class DownloadWorker(threading.Thread):
""""""
def __init__(self, queue):
"""Constructor"""
self.__queue = queue
threading.Thread.__init__(self)
def run(self):
while 1:
md5 = self.__queue.get()
if md5 is None:
break #reached end of queue
#this is a time-cost produce
self._down(md5)
print "task:", md5, "finished"
def _down(self, md5):
config = {
'input':sys.stdin,
'output':'./samples',
'location':'xxx',
'has-fn':False,
'options':{'connect.timeout':60, 'timeout':3600},
'log':file('logs.txt', 'w'),
}
print 'download %s...' % (md5)
try:
data = downloadproc(config['location'], config['options'])#我的下载过程
if data:
dom, fileData = md5query.splited(data)
filename = md5
if config['has-fn']:
filename = '%s_%s' % (md5, dom.nodeValue2('xxxxxxx', '').encode('utf-8'))#这是我的下载的方法
f = file(os.path.join(config['output'], filename), 'w')
f.write(fileData)
f.close()
print '%s\tok' % (md5)
else:
print>>config['log'], '%s\t%s' % (md5, 'failed')
except Exception, e:
print>>config['log'], '%s\t%s' % (md5, str(e))
希望本文所述对大家的Python程序设计有所帮助。
pythonqueue线程_python基于queue和threading实现多线程下载实例相关推荐
- python提取pdf文字_python基于pdfminer库提取pdf文字代码实例
安装pdfminer 库 windows 下安装pdfminer3k pip install pdfminer3k Liunx 下安装pdfminer pip install pdfminer 代码 ...
- pythonqueue线程_python之线程queue
Queue的种类: FIFO: Queue.Queue(maxsize=0) FIFO即First in First Out,先进先出.Queue提供了一个基本的FIFO容器,使用方法很简单,maxs ...
- pythonmultiprocessing之 queue线程_python中的进程、线程(threading、multiprocessing、Queue、subprocess)...
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
- python守护线程错误 退出子线程_请问用python里threading和queue模块来写多线程程序,子线程是如何结束的?...
import queue import threading class Consumer(threading.Thread): def __init__(self, queue): threading ...
- 多线程怎么保证数据安全_Python threading实现多线程 提高篇 线程同步,以及各种锁...
本文主要讲多线程的线程之间的资源共享怎么保持同步. 多线程基础篇见,木头人:Python threading实现多线程 基础篇 Python的多线程,只有用于I/O密集型程序时效率才会有明显的提高,如 ...
- python 主线程_Python threading多线程模块
Python是支持使用多线程的,程序代码可以在一个进程空间中操作管理多个执行的线程,python模块下载时要记得,这个库叫做 threading. 一.threading模块简介 在Python多线程 ...
- python销毁线程_Python 中的线程
封面图片来源:沙沙野 线程线程与进程的联系:都是为了解决并发 线程与进程的区别:进程:计算机中最小的资源分配单位 线程:进程中的一员,同一个进程之间的几个线程共享一个进程的资源 线程可以直接被CPU调 ...
- python queue 查询是否在队列中_python队列Queue的详解
Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 基本FIFO队列 clas ...
- python结束线程池正在运行的线程_python之线程与线程池
#进程是资源分配的最小单位,线程是CPU调度的最小单位.每一个进程中至少有一个线程.#传统的不确切使用线程的程序称为只含有一个线程或单线程程序,而可以使用线程的程序被称为多线程程序,在程序中使用一个线 ...
- python 多线程 模块_Python多线程threading和multiprocessing模块实例解析
本文研究的主要是Python多线程threading和multiprocessing模块的相关内容,具体介绍如下. 线程是一个进程的实体,是由表示程序运行状态的寄存器(如程序计数器.栈指针)以及堆栈组 ...
最新文章
- 浅谈Java中的Set、List、Map的区别
- setlocal启动批处理文件中环境变量的本地化
- html怎么自动设为底部,让底部永远在页面最底部显示的css方法
- Ubuntu11.10配置Eclipse下Android开发环境
- zoj1081判断点是否在多边形内
- java调C接口_java通过jni调用C程序接口
- [记录] --- linux安装redis
- event类型 php,深入解析PHP的Laravel框架中的event事件操作
- requestAnimationFrame 方法你真的用对了吗?
- pika集群水平扩展——让性能容量不再受限
- 27 学java_自学Java第27天
- 洛谷——P1568 赛跑
- 加密日记 android,Lifeograph加密日记应用程序
- TMOD 计时器 计数器
- 数据库MySQL创库、创表基本命令
- 事后诸葛亮-团队总结
- 【转】Android屏幕适配全攻略(最权威的官方适配指导)
- 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)
- POI 生成excel工具类
- 高中数学,向量高考真题解题技巧(快速口算)
热门文章
- C# asp.net mvc,做 301 永久重定向!
- 【转】C#通过WMI设置NTFS目录共享和目录安全
- 自己动手写一个业务实体生成器(1)
- qt html 案例,QT代替WebView的方法及使用例子
- 二维随机变量期望公式_多维随机变量的特征数
- 并发编程学习之Callable接口
- React使用详解(学习笔记)
- (笔记) SpringCloud之Hystrix断路器 属性详解
- ThreadPoolExecutor源码学习(一) -核心属性及应用
- spring中这些开发技巧真的太diao了