多任务

    同一时间内执行多个任务

    并发:在一段时间内交替去执行多个任务

    并行:在一段时间内真正的同事一起执行多个任务,任务数量小于或等于CPU的核心数

进程

    资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位,一个正在运行的程序就是一个进程。

进程的创建步骤

1.导入进程包    import multiprocessing

2.通过继承类创建进程对象    process = multiprocessing.Process()

3.启动进程执行任务    process.start()

process = multiprocessing.Process(target=,args=(,))

target

进程的目标任务名,这里指的是函数名(方法名)

name

进程名,一般不用设置

group

进程组,目前只能使用None

进程执行带有参数的任务

参数名

说明

args

元祖方式传参,参数一定要和参数的顺序保持一致

kwargs

字典的方式传参,参数字典key和参数名保持一致

python 避免等待线程池 python等待所有线程结束_设置线程当天十二点执行

主进程会等待所有子进程结束才会结束程序

设置守护主进程

process.daemon = True

如果主进程结束,子进程立即结束,程序结束

多进程实现本地拷贝案例

python 避免等待线程池 python等待所有线程结束_python 避免等待线程池_02

python 避免等待线程池 python等待所有线程结束_c++ 等待子线程结束_03

线程

    线程是程序执行的最小单位,同属一个进程的多个线程共享进程拥有的全部资源

线程的创建步骤

  1. 导入线程模块    import threading
  2. 通过线程类创建线程对象    thread = threading.Thread(target=)
  3. 启动线程执行任务    thread.start()

target

执行的目标任务名

name

线程名,一般不用设置

group

线程组,目前只能使用None

daemon

daemon=True,设置线程守护

args

元祖方式传参,参数一定要和参数的顺序保持一致

kwargs

字典的方式传参,参数字典key和参数名保持一致

备注:和进程相似

主线程和子线程结束的关系:主线程会等待子线程结束,程序才会结束

同理可以设置守护:thread.setDaemon(True) 在start之前

线程间的执行顺序:由CPU调度决定,无序

区别对比

  1. 创建进程的资源开销要比创建线程的资源开销大
  2. 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位
  3. 线程不能独立执行,必须依存在进程中