线程和进程介绍以及示例
·
介绍线程和进程
- 线程:操作系统中能够进行运算调度的最小单位,也是进程中单一顺序控制单位,一串指令集合。
- 进程:实际运作单位,如wechat、QQ等,各种资源集合。
- 进程与进程的内存都是隔离的;同一个进程中的线程共享同一个内存空间。
- 要操作cpu,就必须先创建线程。进程是不能操作cpu的,只有线程才可以;
- 读取速度:CPU>RAM>DISK;
- CPU主频3.2GHz,那么每秒约 27 亿个时钟周期,如果为单核则每个周期执行 1 条指令,则约每秒执行 27 亿条指令。但实际运算速度取决于 CPU 架构、核心数、IPC、缓存和内存等;
- PID进程id;

区别: - 内存:一个进程中有主线程,还有其他多个线程,且共享同一个内存;但是进程是独立,内存不可共享;
- 通信:两个线程可以直接通信;两个进程中想通信需要找代理人;
- 创建:创建线程很简单,但是创建进程需要克隆其父进程;
- 操作:一个线程可以控制操作同一个进程下的其他线程;但是进程只能操作其子进程;
- 影响:修改进程下的线程可能影响其他线程;但是修改进程不影响其子进程
微信流程:
你点击微信图标
↓
操作系统收到请求
↓
从磁盘找到微信程序
↓
创建微信进程,分配 PID、内存空间
↓
把代码和数据从磁盘加载到内存
↓
创建线程,加入 CPU 调度队列
↓
CPU 开始执行微信代码
↓
微信窗口出现

示例
函数形式:
import threading
import time
#启动线程
def run(n):
print("task",n)
time.sleep(2)
#实例化t1线程、t2线程
t1=threading.Thread(target=run,args=("t1",))
t2=threading.Thread(target=run,args=("t2",))
#启动
t1.start()
t2.start()
类形式:
import threading
import time
#类方式启动线程
class MyThread(threading.Thread):
def __init__(self,n):
super(MyThread, self).__init__()
self.n=n
def run(self) -> None:
print("running task",self.n)
#实例化
t1=MyThread("t1")
t2=MyThread("t2")
#调用启动
t1.start()
t2.start()

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)