多进程多线程
进程、线程和并行执行概括
进程
:就是一个程序,运行在系统之上,便称之这个程序为一个运行进程,并分配进程ID方便系统管理。操作系统中可以运行多个进程,即 多任务运行。
线程
:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作,是进程的实际工作最小单位。一个进程内可以运行多个线程,即多线程运行。
进程之间是内存隔离的,即不同的进程拥有各自的内存空间。线程之间是内存共享的
并行执行
:指的是同一时间做不同的工作,进程之间就是并行执行的,操作系统可以同时运行好多程序,这些程序都是在并行执行。一个python程序完全可以做到一个线程输出你好,一个线程输出hello,像这样一个程序在同一时间做两件乃至多见不同的事情,称之为:多线程并行执行。
简单理解
# 进程解释
进程指的是Process, 是CPU分配资源的最小单位. 简单理解: CPU是按照进程为单位进行资源划分的.
一个.exe(可执行程序), 就是1个进程.
# 线程
指的是进程的执行路径, 执行单元.
# 多进程 和 多线程
多进程: 指的是多个 .exe 任务同时执行, 例如: QQ, 微信, 飞秋等一起执行.
多线程; 指的是进程内部, 多任务执行. 例如: 微信, 和张三, 李四同时聊天.
进程是cpu分配资源的基本单位, 线程是cpu调度资源的最基本单位
# 可理解为
进程 = 车
线程 = 车道, 如果是单车道: 就叫单线程, 如果是多车道: 就叫多线程.
多进程
API
Python的 multiprocessing
模块
-
Process
-
target
:要运行的目标函数。 -
args
:传递给目标函数的参数元组(默认为空)。 -
kwargs
:传递给目标函数的关键字参数字典(默认为空)。 -
name
:进程名称(默认为Process-N
,N为自动递增的整数)。 -
daemon
:设置进程为守护进程(默认为False
)。如果主进程退出,守护进程也会自动退出。 -
group
:进程所属的组(主要用于进程间的层次关系,一般无需手动设置)。
-
-
Pool
processes
:池中工作进程的数量(如果为None
,则使用os.cpu_count()
返回的数量)。initializer
:如果提供,每个工作进程在启动时都会调用这个函数。initargs
:传递给initializer
的元组参数。maxtasksperchild
:工作进程在退出前可以完成的任务数(默认为None
,表示工作进程可以无限期地运行)。context
:指定使用的上下文(如multiprocessing.spawn
、multiprocessing.fork
等,根据平台自动选择)。
示例
"""
多进程解释:
让多个任务同时执行.
思路:
1. 导包.
2. 创建进程类对象, 关联: 要执行的函数.
3. 开启进程.
"""
# 0. 导包
import multiprocessing, time
# 1. 定义函数, 表示: 敲代码.
def coding():
for i in range(10):
print(f'敲代码...{
i}')
time.sleep(0.1)
# 2. 定义函数, 表示: 听音乐.
def music():
for i in range(10):
print(f'听音乐--------{
i}')
time.sleep(0.1)
# 3. 测试代码
if __name__ == '__main__':