并发编程之多进程

#Python 并发编程之多进程
##1.1 multiprocessing 模块
Python 中的多线程无法利用多核资源,如果想要充分的使用多核 cpu 的资源,在 Python 中大部分情况需要使用多进程. Python 为我们提供了非常好用的多进程包multiprocessing!

os.cpu_coutn()

multiprocessing模块用来开启子进程,并在模块中执行我们定制的任务(如函数,实现功能等).

multiprocessing 模块的功能有很多:

?支持子进程
?通信和共享数据
?执行不同形式的同步
?提供了 Process,Queue,Pipe,Lock 等组件

**与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进城内.**

##1.2 Process 类的介绍
###创建进程的类
Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,表示一个子进程中的任务(尚未启动)

**强调:
1. 需要使用关键字的方式来指定参数
2. args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号**

###参数介绍

1. group参数未使用,值始终为 None(并不懂,也不需要懂)
2. target 表示调用对象,即子进程要执行的任务.
3. args 表示调用对象的位置参数元组,args = (1,2,3,‘a‘,‘b‘,‘c‘:‘ff‘,)
4. kwargs 表示调用对象的字典 kwargs = {‘a‘:1,‘b‘:2,‘c‘:3}
5. name 为子进程的名称

###方法介绍
1. p.start()启动 :启动进程,并且调用该子进程中的 p.run()
2. p.run()调用 :进程启动时运行的方法,正是它去调用 target 指定的函数,我们自定义类的类中一定要实现该方法.
3. p.terminate()终止进程 :强制终止进程 p,不会进行任何清理操作,如果 p 创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况.如果 p 还保存了一个锁那么也将不会被释放,进而导致死锁.
4. p.is_alive() :如果p 仍然运行,返回 True.
5. p.join([timeout])等待终止 :主线程等待 p 终止(强调:是主线程处于等的状态,而 p 是处于运行的状态).timeout 是可选的超时时间,需要强调的是, p.join 只能 join 住 start 开启的进程,而不能 join 住 run 开启的进程.

###属性介绍
1. p.daemon : 默认值为 False, 如果设为 True, 代表 p 为后台运行的守护进程,当 p 的父进程终止时, p 也随之终止,并且设定为 True 后, p 不能创建自己的新进程,必须在 p.start() 之前设置
2. p.name : 进程的名字
3. p.pid : 进程的 pid
4. p.exitcode : 进程在运行时为 None, 如果为- N, 表示被信号 N 结束(了解部分).
5. p.authkey : 进程的身份验证键,默认是由 os.urandom()随机生成的32字符的字符串. 这个键的用途是为涉及网络连接的底层进程间通信提供安全性,这类连接只有在具有相同的身份验证键时才能成功(了解部分).

##1.3 Process 类的使用
首先第一步:创建并开启子进程的两种方式

**在 windows 下 Process() 必须放在 if__name__ == ‘__mian__:‘下**

```python
#开进程的方法
详见我的 pycharm??
```

时间: 2024-10-11 11:13:13

并发编程之多进程的相关文章

python并发编程之多进程

python并发编程之多进程 一.什么是进程 进程:正在进行的一个过程或者一个任务,执行任务的是CPU. 原理:单核加多道技术 二.进程与程序的区别 进程是指程序的运行过程 需要强调的是:同一个程序执行两次是两个进程,比如打开暴风影音,虽然都是同一个软件,但是一个可以播放苍井空,另一个可以播放武藤兰. 三.并发与并行 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务. (1)并发

并发编程之多进程进程进程

Python 并发编程之多进程 1.1 multiprocessing 模块 Python 中的多线程无法利用多核资源,如果想要充分的使用多核 cpu 的资源,在 Python 中大部分情况需要使用多进程. Python 为我们提供了非常好用的多进程包multiprocessing! os.cpu_coutn() multiprocessing模块用来开启子进程,并在模块中执行我们定制的任务(如函数,实现功能等). multiprocessing 模块的功能有很多: ?支持子进程 ?通信和共享数

进程,操作系统,Python并发编程之多进程

1.进程基础知识 1.程序:若干文件 2.进程:一个正在执行的文件,程序 3.进程被谁执行:cpu最终运行指定的程序 4.操作系统调度作用:将磁盘上的程序加载到内存,然后交由CPU去处理,一个CPU正在运行的一个程序,就叫开启了一个进程 2.操作系统 1.操作系统:存在于硬盘与软件之间,管理.协调.控制软件与硬件的交互 2.操作系统的作用:将一些复杂的硬件封装成简单的借口,便于使用;合理地调度分配多个进程与cpu的关系,让其有序化 3.操作系统发展史 ①第一代电子计算机(1940-1955) 二

python并发编程02/多进程

目录 python并发编程02/多进程 1.进程创建的两种方式 1.1开启进程的第一种方式 1.2开启进程的第二种方式 1.3简单应用 2.进程pid 2.1命令行获取所有的进程的pid tasklist 2.2代码级别如何获取一个进程的pid 2.3获取父进程(主进程)的pid 3.验证进程之间的空间隔离 4.进程对象join方法 5.进程对象其他属性 6.守护进程 python并发编程02/多进程 1.进程创建的两种方式 1.1开启进程的第一种方式 from multiProcessing

python-学习-python并发编程之多进程与多线程

一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.Python提供了multiprocessing.    multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似.  multiprocessing模块的功能众多:支持子进程.通信和共享数据.执行不同形式的同步,

python学习_day32_并发编程之多进程

一.背景知识 顾名思义,进程即正在执行的一个过程.进程是对正在运行程序的一个抽象.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力.将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在. #一 操作系统的作用: 1:隐藏丑陋复杂的

python并发编程之多进程(二):互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终端 #并发运行,效率高,但竞争同一打印终端,带来了打印错乱 from multiprocessing import Process import os,time def work(): print('%s is running' %os.getpid()) time.sleep(2) print('

并发编程之多进程理论

一,什么是进程 进程:正在进行的一个过程或者说是一个任务,而负责执行任务则是CPU 那么一个扣扣能否称为一个进程? 所以说进程指的是一个正在进程或者说一个任务,是一个抽象的概念,扣扣是死的,也就是说程序是死的,只是一个文件的执行. 二,进程与程序的区别 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 举例: 想象一位有一手好厨艺的厨师正在为他的女儿烘制生日蛋糕. 他有做生日蛋糕的食谱, 厨房里有所需的原料:面粉.鸡蛋.韭菜,蒜泥等. 在这个比喻中: 做蛋糕的食谱就是程序(即用适当形式描述

并发编程之——多进程

一.基本概念 1.1 进程 其实进程就是正在进行的一个程序或者任务,而负责执行任务的是CPU,执行任务的地方是内存.跟程序相比,程序仅仅是一堆代码而已,而程序运行时的过程才是进程.另外同一个程序执行两次就是两个进程了. 1.2 并发与并行 无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务.对于"并发"而言,是伪并行,即看起来是同时运行,单个cpu+多道技术就可以实现并发