本文实例讲述了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实现多线程下载实例相关推荐

  1. python提取pdf文字_python基于pdfminer库提取pdf文字代码实例

    安装pdfminer 库 windows 下安装pdfminer3k pip install pdfminer3k Liunx 下安装pdfminer pip install pdfminer 代码 ...

  2. pythonqueue线程_python之线程queue

    Queue的种类: FIFO: Queue.Queue(maxsize=0) FIFO即First in First Out,先进先出.Queue提供了一个基本的FIFO容器,使用方法很简单,maxs ...

  3. pythonmultiprocessing之 queue线程_python中的进程、线程(threading、multiprocessing、Queue、subprocess)...

    Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...

  4. python守护线程错误 退出子线程_请问用python里threading和queue模块来写多线程程序,子线程是如何结束的?...

    import queue import threading class Consumer(threading.Thread): def __init__(self, queue): threading ...

  5. 多线程怎么保证数据安全_Python threading实现多线程 提高篇 线程同步,以及各种锁...

    本文主要讲多线程的线程之间的资源共享怎么保持同步. 多线程基础篇见,木头人:Python threading实现多线程 基础篇 Python的多线程,只有用于I/O密集型程序时效率才会有明显的提高,如 ...

  6. python 主线程_Python threading多线程模块

    Python是支持使用多线程的,程序代码可以在一个进程空间中操作管理多个执行的线程,python模块下载时要记得,这个库叫做 threading. 一.threading模块简介 在Python多线程 ...

  7. python销毁线程_Python 中的线程

    封面图片来源:沙沙野 线程线程与进程的联系:都是为了解决并发 线程与进程的区别:进程:计算机中最小的资源分配单位 线程:进程中的一员,同一个进程之间的几个线程共享一个进程的资源 线程可以直接被CPU调 ...

  8. python queue 查询是否在队列中_python队列Queue的详解

    Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 基本FIFO队列 clas ...

  9. python结束线程池正在运行的线程_python之线程与线程池

    #进程是资源分配的最小单位,线程是CPU调度的最小单位.每一个进程中至少有一个线程.#传统的不确切使用线程的程序称为只含有一个线程或单线程程序,而可以使用线程的程序被称为多线程程序,在程序中使用一个线 ...

  10. python 多线程 模块_Python多线程threading和multiprocessing模块实例解析

    本文研究的主要是Python多线程threading和multiprocessing模块的相关内容,具体介绍如下. 线程是一个进程的实体,是由表示程序运行状态的寄存器(如程序计数器.栈指针)以及堆栈组 ...

最新文章

  1. 浅谈Java中的Set、List、Map的区别
  2. setlocal启动批处理文件中环境变量的本地化
  3. html怎么自动设为底部,让底部永远在页面最底部显示的css方法
  4. Ubuntu11.10配置Eclipse下Android开发环境
  5. zoj1081判断点是否在多边形内
  6. java调C接口_java通过jni调用C程序接口
  7. [记录] --- linux安装redis
  8. event类型 php,深入解析PHP的Laravel框架中的event事件操作
  9. requestAnimationFrame 方法你真的用对了吗?
  10. pika集群水平扩展——让性能容量不再受限
  11. 27 学java_自学Java第27天
  12. 洛谷——P1568 赛跑
  13. 加密日记 android,Lifeograph加密日记应用程序
  14. TMOD 计时器 计数器
  15. 数据库MySQL创库、创表基本命令
  16. 事后诸葛亮-团队总结
  17. 【转】Android屏幕适配全攻略(最权威的官方适配指导)
  18. 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)
  19. POI 生成excel工具类
  20. 高中数学,向量高考真题解题技巧(快速口算)

热门文章

  1. C# asp.net mvc,做 301 永久重定向!
  2. 【转】C#通过WMI设置NTFS目录共享和目录安全
  3. 自己动手写一个业务实体生成器(1)
  4. qt html 案例,QT代替WebView的方法及使用例子
  5. 二维随机变量期望公式_多维随机变量的特征数
  6. 并发编程学习之Callable接口
  7. React使用详解(学习笔记)
  8. (笔记) SpringCloud之Hystrix断路器 属性详解
  9. ThreadPoolExecutor源码学习(一) -核心属性及应用
  10. spring中这些开发技巧真的太diao了