博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python ThreadPool简单应用多线程
阅读量:7106 次
发布时间:2019-06-28

本文共 1828 字,大约阅读时间需要 6 分钟。

一、安装与简介

pip install threadpool   

pool = ThreadPool(poolsize)  requests = makeRequests(some_callable, list_of_args, callback)  [pool.putRequest(req) for req in requests]  pool.wait()

第一行定义了一个线程池,表示最多可以创建poolsize这么多线程;

第二行是调用makeRequests创建了要开启多线程的函数,以及函数相关参数和回调函数,其中回调函数可以不写,default是无,也就是说makeRequests只需要2个参数就可以运行;

第三行用法比较奇怪,是将所有要运行多线程的请求扔进线程池,[pool.putRequest(req) for req in requests]等同于

  for req in requests:  

     pool.putRequest(req) 

第四行是等待所有的线程完成工作后退出。

 

二、代码实例

import time def sayhello(str):    print "Hello ",str    time.sleep(2)name_list =['xiaozi','aa','bb','cc'] start_time = time.time()for i in range(len(name_list)):    sayhello(name_list[i])print '%d second'% (time.time()-start_time)

改用线程池代码,花费时间更少,更效率

import timeimport threadpool  def sayhello(str):    print "Hello ",str    time.sleep(2)name_list =['xiaozi','aa','bb','cc']start_time = time.time()pool = threadpool.ThreadPool(10) requests = threadpool.makeRequests(sayhello, name_list) [pool.putRequest(req) for req in requests] pool.wait() print '%d second'% (time.time()-start_time)

 

三、加锁

 

import threadpool,threading mutex =threading.Lock()
def run_get_fusion_mongo_result(doc_id):     global temp_result     print doc_id     db_facetValues=get_organization_facet_count(doc_id)     db_facetValues.sort()     print 'db_facetValues',db_facetValues     fusion_facetValues=get_fusion_data(doc_id)     fusion_facetValues.sort()     print 'fusion_facetValues',fusion_facetValues     diff = list(set(db_facetValues).difference(set(fusion_facetValues)))     temp_result_docid = {}     if diff:         temp_result_docid['PublicationId'] = doc_id         temp_result_docid['Diff_Facets'] = diff     if mutex.acquire(1):         if temp_result_docid:             temp_result.append(temp_result_docid)         mutex.release()

转载于:https://www.cnblogs.com/hylinux/p/8295209.html

你可能感兴趣的文章
WLS_Oracle Weblogic管理概述(概念)
查看>>
UML的基本关联
查看>>
没有找到MSVCR100.dll解决方法
查看>>
wordpress调用函数大全
查看>>
触发器四(学习笔记)
查看>>
[LeetCode] Excel Sheet Column Number 求Excel表列序号
查看>>
Javascript闭包简单理解
查看>>
Android ---paint类
查看>>
spin_lock & mutex_lock的差别?
查看>>
curl命令具体解释
查看>>
【HDU】4336 Card Collector
查看>>
Linux进程间通信——使用命名管道
查看>>
TestLink学习四:TestLink1.9.13使用说明
查看>>
通用分页存储过程
查看>>
神秘代码让iPhone微信闪退的解决方法
查看>>
文章索引
查看>>
基于jquery结婚电子请柬特效素材
查看>>
Knockout应用开发指南 第九章:高级应用举例
查看>>
EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考
查看>>
设计模式——责任链模式
查看>>