python开发Day10(多进程多线程补充)
关于进程:
介绍:
- 在python中如果想要操作进程需要使用模块multprocessing
使用:
- Process #进程
- 介绍:
- 操作进程使用multprocessing下的Process模块,注:进程之间的内存是不共享的!(可以共享需要一个特殊的特殊的数据结构Array(数组))
- 使用:
- p = Process(target=函数,args=(参数,)) #创建线程
- p.daemon(True) #当参数为Ture的时候为主进程执行完毕后退出程序,为False的时候为等待子进程执行完毕后退出,默认为False
- p.join() #和线程的同样,很少使用!
- 使用Array来让多个进程修改一个数据
from multiprocessing import Process,Array def f(a,b):b[a] = 100 + a if __name__ == '__main__':temp = Array('i',[11,22,33,44])for i in range(2):#循环两次执行f函数修改列表的值p = Process(target=f,args=(i,temp,))p.start()p.join()for i in temp:print(i) 执行结果: 100 101 33 44
View Code
- 利用manager实现多进程之间共享数据
from multiprocessing import Process,Manager def f1(a,b):b[a] = 100 + aprint(b)if __name__ == '__main__':manage = Manager()dic = manage.dict()for i in range(5):p = Process(target=f1,args=(i,dic,))p.start()p.join() 执行结果: {0: 100} {0: 100, 1: 101} {0: 100, 1: 101, 2: 102} {0: 100, 1: 101, 2: 102, 3: 103} {0: 100, 1: 101, 2: 102, 3: 103, 4: 104}
View Code
- 介绍:
- Pool #进程池的操作
- 介绍:
- 犹如一个书店,一本同样的书有3本,3个人取走后之后来的人想要获取到必须等待前3个人还书后才可获得。
- 使用:
poll.apply(函数,参数) #在进程池中申请一个进程去执行函数(申请一个进程执行一个再申请)
poll.apply_async(func=函数名,args=(参数,),callback=函数名2) #申请一个进程执行函数完成后执行函数名2,函数名2的参数是函数名执行完成后的返回值(直接全申请了,一起执行)
- 代码:
from multiprocessing import Pool import time def f1(i):time.sleep(2)return i+100def end_call(arg):print('end>>>',arg)if __name__ == '__main__':p = Pool(5) #创建一个线程池一共有5个线程for i in range(11):p.apply_async(func=f1,args=(i,),callback=end_call)print('123123')p.close()p.join()执行结果: 123123 end>>> 100 end>>> 101 end>>> 102 end>>> 103 end>>> 104 end>>> 105 end>>> 106 end>>> 107 end>>> 108 end>>> 109 end>>> 110
View Code
- 介绍:
- Process #进程
转载于:https://www.cnblogs.com/WuYongQi/p/5673477.html
python开发Day10(多进程多线程补充)相关推荐
- python随笔系列--多进程多线程并发度初探
大家都知道python中由于GIL这把大锁的存在,导致python的多线程并不是真正的多线程(不同于java等语言).首先了解下GIL导致的现象:同一时间只能有一个线程占有python解释器(或者,同 ...
- 使用Python开发的POC多线程批量执行小框架
因为代码量非常少,所以就叫"小框架"吧. 接口非常简陋,但是好处是适配POC脚本的时候很灵活,兼容性高,不需要任何研究成本. 简单来说,你按照自己的想法和习惯开发一个POC验证程序 ...
- python中的多进程与多线程(二)
1.使用多线程可以有效利用CPU资源,线程享有相同的地址空间和内存,这些线程如果同时读写变量,导致互相干扰,就会产生并发问题,为了避免并发问题,绝不能让多个线程读取或写入相同的变量,因此python中 ...
- Python学习笔记:多线程和多进程(转1)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python实现多进程/多线程同时下载单个文件
功能描述: 使用多进程/多线程同时下载单个文件,可以自定义文件地址.进程/线程数量. 主要思路: 获取文件大小,使用多个进程/线程分别下载一部分,最后再把这些文件拼接起来. 参考代码: 运行结果: - ...
- python多进程多线程,多个程序同时运行
python 多线程 多进程同时运行 多任务要求 python 基础语法 python 文件目录操作 python 模块应用 开发工具 pycharm 实现方法 多任务的实现可以用进程和线程来实现 进 ...
- python中的多任务-多线程和多进程
多线程和多进程都是实现多任务的一种方式,但是对于很多初学者来说想分清楚他们往往是一件非常头疼的事,首先我们需要了解多任务的概念. 所谓的多任务就是在同一时刻同时做很多事情,比如我们一边使用浏览器上网一 ...
- 多进程多线程 ---- Python和Java
Python: 真正的并行执行多任务只能在 多核CPU 上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统会自动 的把很多任务轮流调度到每个核心上执行. 对于操作系统来说, ...
- python廖雪峰_【Python】python中实现多进程与多线程
进程与线程 进程(process)就是任务,是计算机系统进行资源分配和调度的基本单位[1].比如,打开一个word文件就是启动了一个word进程. 线程(thread)是进程内的子任务.比如word中 ...
最新文章
- C++ 函数参数 值传递与引用传递
- PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL
- Hystrix的应用案例:多短信供应商的自动切换与恢复
- 机器学习基础(HGL的机器学习笔记1)
- 【LeetCode每周算法】两数相加
- windows下编译chromium浏览器的15个流程整理
- IT英语职场之网管英语大全
- 反射,hashlib模块,正则匹配,冒泡,选择,插入排序
- 关闭注册表编辑器,重新启动计算机后生效。这样资源管理器重启后就不会自动重启了。...
- java生成j动态页面_zk动态产生多个页面的例子代码
- [转】TCP 三次握手 四次挥手
- 设计sample语言的语法_Verilog语法之〇:Verilog HDL简介
- bash的快捷键、特殊参数、历史命令、相关文件
- qt5不能添加新文件_VS2017配置Qt5.9教程
- 计算机网络实验一 集线器和交换机的工作原理
- C语言输出转置矩阵解题步骤,C语言实现矩阵转置
- Go 小项目1 - 家庭收支记账软件
- Http请求全过程简述
- java计数器map_计数器(Counter)
- 一位股票老战士的十年投资心得!