multiprocessing.dummy python 笔记

  • 代码
    • pool.map
    • pool.imap
    • pool.imap_unordered

代码

pool.map

不管chunksize多大,输出的list永远和a的list 顺序一样,只是中间处理的先后顺序不同

from multiprocessing.dummy import Pool
import os
import time
import threadingdef task(i):print("{} begin".format(threading.current_thread().name))print(i)#1-5(1-5输出的顺便随机) 6-10 11-15 16-20 (每次输出的随机) 每次5个线程进行处理 但是先后顺序没有关系,不影响输出的顺序time.sleep(5)return i# print("{} end".format(threading.current_thread().name))if __name__ == "__main__":a=range(1,21)thread_count=5P=Pool(thread_count)#map  每次从iter a(1-20)调用5个元素分别给5个task 进行并行处理,所以会进行4(20/5)次 #map  每次得到的结果都会等4次5个task都处理完,同时将最后的结果按照传入的顺序转为list输出listres=P.map(task,a,chunksize=1)print(listres)#得到结果list,最后一次输出# P.map(task,a,chunksize=2)#1-20 每次从iter a调用5个元素(隔chunksize个元素)分别给5个task 五个task 进行并行处理,# 最后还是输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

终端输出结果

Thread-1 begin
Thread-2 begin
Thread-3 begin
Thread-5 begin
2
3
5
1
Thread-4 begin
4
Thread-5 begin
Thread-4 begin
7
6
Thread-2 begin
8
Thread-3 begin
9
Thread-1 begin
10
Thread-4 begin
11
Thread-5 begin
Thread-3 begin
12
13
Thread-2 begin
14
Thread-1 begin
15
Thread-3 begin
16
Thread-4 begin
17
Thread-5 begin
18
Thread-1 begin
19
Thread-2 begin
20
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

pool.imap

imap作用同map 但imap是一个存放所有结果的迭代器 需要在主进程中主动使用next来驱动子进程的调用,
可以不用等5个线程都处理完才返回,这里每次处理完一个task函数将得到一个迭代器结果
代码

from multiprocessing.dummy import Pool
import os
import time
import threadingdef task(i):print("{} begin".format(threading.current_thread().name))print(i)#1-5(1-5输出的顺便随机) 6-10 11-15 16-20 (每次输出的随机) 每次5个线程进行处理 但是先后顺序没有关系,不影响输出的顺序time.sleep(1)return i# print("{} end".format(threading.current_thread().name))if __name__ == "__main__":a=range(1,21)thread_count=5P=Pool(thread_count)for i,res in enumerate(P.imap(task,a,chunksize=1)):print("res:",res)

输出:最终res还是按照1-20的顺序进行输出,chunksize=2时输出相同,此时res:2需要等第2次5个task处理时才会输出

Thread-1 begin
Thread-2 begin
1
Thread-5 begin
5
Thread-4 begin
4
Thread-3 begin
3
2
Thread-1 begin
6
res: 1
Thread-3 begin
7
res: 2
Thread-5 begin
Thread-2 begin
Thread-4 begin
9
8
res: 3
res: 4
10
res: 5
Thread-1 begin
11
res: 6
Thread-4 begin
12
Thread-3 begin
Thread-5 begin
Thread-2 begin
13
res: 7
15
14
res: 8
res: 9
res: 10
Thread-1 begin
16
res: 11
Thread-4 begin
17
res: 12
Thread-3 begin
res: 13
18
Thread-2 begin
Thread-5 begin
19
res: 14
20
res: 15
res: 16
res: 17
res: 18
res: 19
res: 20

pool.imap_unordered

终端输出:可以不是按照a的顺序,每次处理完一个线程函数task,就会返回一个结果

Thread-1 begin input=1
Thread-2 begin input=3
Thread-4 begin input=7
Thread-5 begin input=9
Thread-3 begin input=5
Thread-2 begin input=4
Thread-1 begin input=2
Thread-5 begin input=10
Thread-3 begin input=6
Thread-4 begin input=8
Thread-3 begin input=11
res= 5
Thread-2 begin input=13
Thread-1 begin input=15
res= 6
Thread-5 begin input=17
Thread-4 begin input=19
res= 3
res= 4
res= 1
res= 2
res= 9
res= 10
res= 7
res= 8
Thread-3 begin input=12
Thread-4 begin input=20
Thread-5 begin input=18
Thread-2 begin input=14
Thread-1 begin input=16
res= 11
res= 12
res= 13
res= 14
res= 17
res= 18
res= 19
res= 20
res= 15
res= 16

multiprocessing.dummy python使用笔记相关推荐

  1. python文字处理dummy_python中multiprocessing、multiprocessing.dummy和threading用法笔记

    一.multiprocessing 用法参考地址:multiprocessing用法 首先解释一个误区: 进程池的大小是每次同时执行的进程数,但是并不会影响主进程申请进程的数量.主进程申请多进程量不等 ...

  2. python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例

    本文简单介绍python进程模块multiprocessing提供的进程池和线程池功能. 进程池: 进程池的使用有四种方式:apply_async.apply.map_async.map.其中appl ...

  3. Python学习笔记(六)

    1. IO编程 1.1 文件读写 1.2 StringIO和BytesIO 1.3 操作文件和目录 1.4 序列化 2. 进程和线程 2.1 多进程 2.2 多线程 2.3 ThreadLocal 2 ...

  4. Python 链表笔记

    Python 链表笔记 链表结构定义 构建链表 定义 在索引处添加节点 获取 index 的值 删除索引处节点 报错 AttributeError: 'NoneType' object has no ...

  5. 字节跳动大佬的Python自学笔记.pdf

    1. 字节跳动大佬的Python自学笔记 这是我的一个朋友自学资料包,通过这个资料包自学拿到了字节跳动的Offer, 下面是他之前入门学习Python时候的学习资料,非常全面,从Python基础.到w ...

  6. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  7. python学习笔记之编写readConfig读写配置文件

    python学习笔记之编写readConfig读写配置文件_weixin_34055910的博客-CSDN博客

  8. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  9. Python学习笔记一简介及安装配置

    Python学习笔记一 参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e54 ...

最新文章

  1. Android-环境问题
  2. 接口隔离原则最直白描述
  3. python画小猪乔治_小孩挑食难搞定?试下猪肉这样炒,简单5步超下饭,比牛肉还香嫩...
  4. 【AI有识境】如何掌握好图像分割算法?值得你看的技术综述
  5. 12-黑马程序员------C 语言学习笔记--- C语言指针与函数
  6. http超文本传输协议的http头部分析
  7. python异步IO
  8. java学习(127):finally语句
  9. android自定义控件几种,Android 自定义View一个控件搞定多种水波纹涟漪扩散效果 - CSDN博客...
  10. 在VC中使用ADO开发数据库应用程序
  11. 自动特征工程、NAS、超参调优和模型压缩,微软开源的NNI一库搞定!
  12. cygwin 编译linux内核,【记录】Cygwin下交叉编译Linux内核时用make menuconfig去确认和修改配置...
  13. irc ubuntu_让我们聊聊写作:在IRC上加入我们
  14. 具体案例 快速原型模型_工业/产品设计流程案例---智能手表设计:从创意到模型(一)...
  15. python实训报告5000字_20193420 实验一 《Python程序设计》实验一报告
  16. canvas的beginPath和closePath分析总结,包括多段弧的情况
  17. 2018全球最值得关注的60家半导体公司,7家中国公司新上榜 | 年度榜单
  18. bootstrap实现树节点、树结构
  19. word中替换向下箭头
  20. iOS12 捷径(热门推荐)

热门文章

  1. 冒牌网站提供假冒卡巴斯基KIS7.0下载
  2. Java对接快递100
  3. Qt编写可视化大屏电子看板系统27-模块5负荷分布
  4. 使用apache服务部署静态网站--初篇
  5. 细说react源码中的合成事件
  6. MetaSploit攻击实例讲解------Metasploit自动化攻击(包括kali linux 2016.2(rolling) 和 BT5)...
  7. sqlalchemy.exc.ArgumentError: Mapper mapped class NewsLoog->news_loog could not assemble any primary
  8. 【素描教程】新手素描鼻子的起形跟…
  9. 解决IDEA创建Maven工程没有src目录还很慢的问题
  10. 基于分区表的物化视图快速刷新以及维护