进程

程序:例如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)相关推荐

  1. Python 多进程 multiprocessing 使用示例

    参考:http://blog.csdn.net/qdx411324962/article/details/46810421 参考:http://www.lxway.com/4488626156.htm ...

  2. python 多进程multiprocessing进程池pool tensorflow-yolov3 报错 MemoryError

    进程数设置为1-9个都能正常运行,设置成10个就开始报错,怪事! D:\20191031_tensorflow_yolov3\python\python.exe D:/20191031_tensorf ...

  3. python 多进程 multiprocessing.Queue()报错:The freeze_support() line can be omitted if the program

    运行以下多进程测试代码时报错: # -*- coding: utf-8 -*- """ @File : test_191205_测试多进程Multiprocessing_ ...

  4. python 多进程multiprocessing 如何获取子进程的返回值?进程池pool,apply_async(),get(),

    案例1 # -*- coding: utf-8 -*- """ @File : 20200318_摄像头多进程流传输.py @Time : 2020/3/18 14:58 ...

  5. Python多线程threading和多进程multiprocessing的区别及代码实现

    1. 多线程threading import time from threading import Threaddef thread_read(data):while True:print('read ...

  6. python并发编程:协程asyncio、多线程threading、多进程multiprocessing

    python并发编程:协程.多线程.多进程 CPU密集型计算与IO密集型计算 多线程.多进程与协程的对比 多线程 创建多线程的方法 多线程实现的生产者-消费者爬虫 Lock解决线程安全问题 使用线程池 ...

  7. Python高级特性与网络爬虫(一):使用Ajax请求爬取用户微博内容和python多进程爬取用户图片

    最近阅读了崔庆才写的<Python3网络爬虫开发实战>,系统地学习一下利用Python写网络爬虫.由于这本书出版时间是2018年,很多书中案例涉及的网站已经改版,基本上每个案例都需要自己再 ...

  8. Python并发之多进程multiprocessing(2)

    1, 多进程 vs 多线程 Python中的常见的并发模型分为两种: 多线程threading并发,多用于IO密集型计算 多进程multiprocessing并发,多用于CPU密集型计算 (1)IO密 ...

  9. Python编程基础:第六十节 多进程Multiprocessing

    第六十节 多进程Multiprocessing 前言 实践 前言 多进程能够在不同的CPU核心上并行运行任务,可以绕过用于线程的GIL. 多进程:更适合密集计算相关任务(cpu使用率高). 多线程:更 ...

最新文章

  1. 洛谷——P2094 运输
  2. leetcode讲解--559. Maximum Depth of N-ary Tree
  3. 判断出栈序列是否合法(c语言实现)
  4. 数据结构思维导图汇总
  5. 扇贝有道180923每日一句
  6. 计算机组成原理(白中英) 第八章 课后题答案
  7. 优惠券如何引流,如何做好优惠券推广,优惠券正确引流方法
  8. 关于Windows勒索病毒以及445端口防护
  9. ASPUpload文件上传组件的用法
  10. MCU学习笔记_ARM Cortex M0_简介
  11. 格雷斯音频大篷车无线音箱回顾
  12. python——设计一个简单的购房商贷月供计算器
  13. 第22章 常用存储器介绍
  14. 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
  15. 阿里云的安全防护措施
  16. Mac下添加Chrome插件
  17. Azure DevOps Server(TFS) 客户端分析
  18. 信息差副业小项目,高利润,新手日入500+
  19. 使用python获取美股行情数据
  20. x86汇编_指令集大全_笔记_6

热门文章

  1. 悉尼一船只引擎爆炸男子被迫跳水:严重烧伤被送医
  2. 9. 求数组任意次最值
  3. Python库大全涵盖了Python应用的方方面面建议收藏留用!
  4. C# 实现连连看功能
  5. 《HTML5和JavaScript Web应用开发》——第 2 章 移动Web 2.1移动优先
  6. JAVA IO系列----ObjectInputStream和ObjectOutputStream类
  7. Resid 学习笔记1-基础命令
  8. 再次理解javascript中的事件
  9. Redhat 7 Web服务器配置
  10. 现代成功男人的硬指标:盖房,种树,写书