多任务
并发:任务交替去执行
并行:多核真正的一起执行
进程
特点
进行资源分配的基本单位
进程之间不共享全局变量,只是把全局变量拷贝一份到自己进程内的私有变量
导入进程包
# 1. 导入进程包
import multiprocessing
import time
import os
创建子进程
不带参数
# target: 进程执行的目标任务的函数名
dance_process = multiprocessing.Process(target=函数名)
带参数
# target: 进程执行的目标任务的函数名
# 以元组方式传参,元组里面的元素顺序要和函数的参数顺序保持一致
sub_process = multiprocessing.Process(target=show_info, args=("李四", 20))
# 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求
sub_process = multiprocessing.Process(target=show_info, kwargs={"age":20, "name": '王五'})
# 以字典+元组方式传参
sub_process = multiprocessing.Process(target=show_info, args=("冯七"), kwargs={"age": 20})
查看当前进程
multiprocessing.current_process()
获取当前进程的编号
dance_process_id = os.getpid()
获取当前进程的父进程编号
dance_process_parent_id = os.getppid()
摧毁进程
根据进程编号强制杀死指定进程
os.kill(dance_process_id, 9)
销毁子进程
子进程对象.terminate()
守护主进程,跟随主进程摧毁
进程对象.daemon = True
启动进程
进程对象.start()
线程
特点
线程之间共享全局变量
主线程会等待所有的子线程执行结束再结束
导入线程包
import threading
import time
互斥锁-线程大批量同时操作全局变量
创建全局锁
锁的对象名 = threading.Lock()
上锁
锁的对象名.acquire()
释放锁
锁的对象名.release()
创建子线程
不带参数
#daemon=True()守护主线程,跟随主线程摧毁
线程名 = threading.Thread(target=线程执行的函数名, daemon=True())
带参数
#daemon=True()守护主线程,跟随主线程摧毁
# 以元组方式传参,元组里面的元素顺序要和函数的参数顺序保持一致
sub_thread = threading.Thread(target=线程执行的函数名, daemon=True(), args=("李四", 20))
# 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求
sub_thread = threading.Thread(target=线程执行的函数名, daemon=True(), kwargs={"age":20, "name": '王五'})
# 以字典+元组方式传参
sub_threads = threading.Thread(target=线程执行的函数名, daemon=True(), args=("冯七"), kwargs={"age": 20})
查看当前线程
threading.current_thread()
启动线程
线程名.start()
主进程会等待子进程执行完成以后程序再退出
喜欢的亲可以关注点赞评论哦!以后每天都会更新的哦!本文为小编原创文章; 文章中用到的文件、安装包等可以加小编联系方式获得;
欢迎来交流小编联系方式VX:CXKLittleBrother 进入运维交流群