多任务知识点
1.并发和并行[重点]
并发: 快速交替
并行: 真正同时
2.多进程
单词: process(进程)
多进程入门[重点]
1.导包 import multiprocessing
2.创建对象 p = multiprocessing.Process(target=任务名)
3.开启进程 p.start()
os模块
获取当前进程编号 os.getpid()
获取父进程编号 os.getppid()
获取当前进程对象信息(拓展)
获取当前进程对象 multiprocessing.current_process()
获取当前进程对象name属性 multiprocessing.current_process().name
获取当前进程对象的编号 multiprocessing.current_process().pid
多进程参数传递
args 元组方式传递(注: 1.一个元素需要加逗号; 2.按照位置去传递参数, 实参与形参位置要一一对应)
kwargs 字典方式传递(注: 1.key键需要加引号; 2.按照形参名去传递参数)
注意事项
多进程间不能共享全局变量
主进程默认等待子进程结束再结束
让子进程随着主进程结束
1.daemon属性设置守护主进程: 子进程对象.daemon=True
2.terminate()方法, 直接终止子进程: 子进程对象.terminate()
3.多线程
单词: thread(线程)
多线程入门[重点]
1.导包 from threading import Thread
2.创建对象 t = Thread(target=任务名)
3.开启线程 t.start()
获取当前进程对象信息(拓展)
获取当前进程对象
thread.current_process()
获取当前进程对象name属性 thread.current_process().name
获取当前进程对象的编号 thread.current_process().native_id
多线程参数传递
args 元组方式传递(注: 1.一个元素需要加逗号; 2.按照位置去传递参数)
kwargs 字典方式传递(注: 1.key键需要加引号; 2.按照形参名去传递参数)
注意事项
一个进程中多线程间可以共享全局变量
解决线程安全问题 线程.join(): 线程1告诉后面的线程等我执行完, 你们再执行
互斥锁(了解)
主线程默认等待子线程结束再结束
让子线程随着主线程结束
1.daemon属性设置守护主线程: 子线程对象.daemon=True
2.setDaemon()方法, 直接终止子线程: 子线程对象.setDaemon()