Python高级——多进程(multiprocessing)
进程
程序:例如xxx.py这是程序,是一个静态的
进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。
————目录————:
- 进程的状态
- 多进程的基本使用
- 进程名称及pid获取
- 参数传递
- 全局变量
- 守护进程
进程的状态
就绪态:运行的条件都已经满足,正在等在cpu执行
执行态:cpu正在执行其功能
等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态
多进程的基本使用
1.创建:
import multiprocessing
对象 = multiprocessing.Process(group, target , name , args , kwargs)
2.参数:
参数 | 描述 |
---|---|
target | 如果传递了函数的引用,这个子进程就执行这里(函数)的代码 |
args | 给target指定的函数传递的参数,以元组的方式传递 |
kwargs | 给target指定的函数传递命名参数 |
name | 给进程设定一个名字,可以不设定 |
group | 指定进程组,大多数情况下用不到 |
3.方法:
方法 | 描述 |
---|---|
start() | 启动子进程实例(创建子进程) |
is_alive() | 判断进程子进程是否还在活着 |
join([timeout]) | 是否等待子进程执行结束,或等待多少秒 |
terminate() | 不管任务是否完成,立即终止子进程 |
4.属性:
参数 | 描述 |
---|---|
name | 当前进程的别名,默认为Process-N,N为从1开始递增的整数 |
pid | 当前进程的pid(进程号) |
进程名称及pid获取
1.进程名:
multiprocessing.current_process()
2.进程pid:
(1)multiprocessing.current_process().pid
(2)import os模块的os.getpid()
(3)获取父id:os.getppid()
参数传递
与多线程theading一致
1.元祖传参:args = (参数1,参数2,…)
注意:如果只有一个参数,应写为args=(参数,),逗号不可省略,证明他是一个元组
2.字典传参:kwargs = {“a”: 10, “b”:100,….}
3.混合使用:args = (参数1,), kwargs = {“b”:100,…….}
全局变量
进程之间不可共享全局变量
例:
import multiprocessing
import time
n = 0def add():global nn += 1print(n)if __name__ == '__main__':m1 = multiprocessing.Process(target=add)m2 = multiprocessing.Process(target=add)m1.start()time.sleep(0.5)m2.start()time.sleep(0.5)print(n)
执行结果:两次进程的操作结果都是1,而且最后n的值为0,说明主进程之间不共享全局变量(但是可通过消息队列Queue等进行数据的通信)
守护进程
设置后主进程结束时子进程也结束
# 第一种方法:主进程结束,子进程也结束
p1.daemon = True
# 第二种方法:让主进程立即结束
p1.terminate()
Python高级——多进程(multiprocessing)相关推荐
- Python 多进程 multiprocessing 使用示例
参考:http://blog.csdn.net/qdx411324962/article/details/46810421 参考:http://www.lxway.com/4488626156.htm ...
- python 多进程multiprocessing进程池pool tensorflow-yolov3 报错 MemoryError
进程数设置为1-9个都能正常运行,设置成10个就开始报错,怪事! D:\20191031_tensorflow_yolov3\python\python.exe D:/20191031_tensorf ...
- python 多进程 multiprocessing.Queue()报错:The freeze_support() line can be omitted if the program
运行以下多进程测试代码时报错: # -*- coding: utf-8 -*- """ @File : test_191205_测试多进程Multiprocessing_ ...
- python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),
案例1 # -*- coding: utf-8 -*- """ @File : 20200318_摄像头多进程流传输.py @Time : 2020/3/18 14:58 ...
- Python多线程threading和多进程multiprocessing的区别及代码实现
1. 多线程threading import time from threading import Threaddef thread_read(data):while True:print('read ...
- python并发编程:协程asyncio、多线程threading、多进程multiprocessing
python并发编程:协程.多线程.多进程 CPU密集型计算与IO密集型计算 多线程.多进程与协程的对比 多线程 创建多线程的方法 多线程实现的生产者-消费者爬虫 Lock解决线程安全问题 使用线程池 ...
- Python高级特性与网络爬虫(一):使用Ajax请求爬取用户微博内容和python多进程爬取用户图片
最近阅读了崔庆才写的<Python3网络爬虫开发实战>,系统地学习一下利用Python写网络爬虫.由于这本书出版时间是2018年,很多书中案例涉及的网站已经改版,基本上每个案例都需要自己再 ...
- Python并发之多进程multiprocessing(2)
1, 多进程 vs 多线程 Python中的常见的并发模型分为两种: 多线程threading并发,多用于IO密集型计算 多进程multiprocessing并发,多用于CPU密集型计算 (1)IO密 ...
- Python编程基础:第六十节 多进程Multiprocessing
第六十节 多进程Multiprocessing 前言 实践 前言 多进程能够在不同的CPU核心上并行运行任务,可以绕过用于线程的GIL. 多进程:更适合密集计算相关任务(cpu使用率高). 多线程:更 ...
最新文章
- 洛谷——P2094 运输
- leetcode讲解--559. Maximum Depth of N-ary Tree
- 判断出栈序列是否合法(c语言实现)
- 数据结构思维导图汇总
- 扇贝有道180923每日一句
- 计算机组成原理(白中英) 第八章 课后题答案
- 优惠券如何引流,如何做好优惠券推广,优惠券正确引流方法
- 关于Windows勒索病毒以及445端口防护
- ASPUpload文件上传组件的用法
- MCU学习笔记_ARM Cortex M0_简介
- 格雷斯音频大篷车无线音箱回顾
- python——设计一个简单的购房商贷月供计算器
- 第22章 常用存储器介绍
- 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
- 阿里云的安全防护措施
- Mac下添加Chrome插件
- Azure DevOps Server(TFS) 客户端分析
- 信息差副业小项目,高利润,新手日入500+
- 使用python获取美股行情数据
- x86汇编_指令集大全_笔记_6