Python入门——多线程、多进程概括&API参数、Thread.join()、什么是线程死锁、如何避免?

多进程多线程

进程、线程和并行执行概括

进程:就是一个程序,运行在系统之上,便称之这个程序为一个运行进程,并分配进程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.spawnmultiprocessing.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__':
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值