博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 线程
阅读量:6709 次
发布时间:2019-06-25

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

hot3.png

对比threading ,自己建立线程池。与python提供模块,multiprocessing.dummy, pool,map的运用

引入:Map

Map是个很酷的小功能,也是简化Python并发代码的关键。对那些不太熟悉Map的来说,它有点类似Lisp.它就是序列化的功能映射功能. e.g.

urls = [', ']results = map(urllib2.urlopen, urls)

这里调用urlopen方法,并把之前的调用结果全都返回并按顺序存储到一个集合中。这有点类似

results = []for url in urls:     results.append(urllib2.urlopen(url))

Map能够处理集合按顺序遍历,最终将调用产生的结果保存在一个简单的集合当中。

示例:

from multiprocessing.dummy import Pool...pool = Pool()pool.map(funtion,funtion_para_list)  pool.close() pool.join()

其中,

  1. pool()带参数,如果不带,则默认使用系统的内核数,也可以自己加上内核数,比如4.

  2. funtion,是一个处理函数 ,而处理的对象作为一个参数,传入该函数,如果对象有多个,可以先生成一个列。

  3. 使用pool.map()传入函数和参数队列。

  4. 返回的结果,也是以一个列进行保存。

使用上有限制,你要处理的对象(函数的参数)必须是已知的,存放于一个队列中。然后使用map来进行处理。pool的作用是把内核都使用起来。这里我认为使用默认的内核数比较好。与传统的thread比较,其优势在于,对于处理已知的对象,可以更快,而对于未知的对象(对象不确定,不能简单的生成一个队列来处理),还是使用传统的thread更加合适。

转载于:https://my.oschina.net/zhengyijie/blog/191955

你可能感兴趣的文章
读取EXCEL的简单方式
查看>>
centos svn更新错误和SVN版本升级
查看>>
python入门
查看>>
HMTL5的 video 在IOS7中碰到的坑
查看>>
递推DP UVA 590 Always on the run
查看>>
设备读写方式
查看>>
实验箱FPGA部分测试报告及A8与FPGA链接测试报告
查看>>
CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第一件事就是移植串口驱动,重定向 printf...
查看>>
使用docker 安装 GITLIB
查看>>
既完美又可爱的拖拽(原生js)
查看>>
linux mysql 找不到 <mysql/mysql.h>
查看>>
JS-过滤敏感词【RegExp】
查看>>
HTC G11短信为什么对单独一个人发不出去??!!!!跪求解啊!!!!
查看>>
ObservableCollection 与list
查看>>
在工作空间中构建和使用catkin包
查看>>
Oracle RAC 归档 与 非归档 切换
查看>>
main函数的参数
查看>>
C++ AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用
查看>>
mongodb sort
查看>>
crossplatform---Node.js Applications with VS Code
查看>>