介绍线程和进程

  1. 线程:操作系统中能够进行运算调度的最小单位,也是进程中单一顺序控制单位,一串指令集合。
  2. 进程:实际运作单位,如wechat、QQ等,各种资源集合。
  3. 进程与进程的内存都是隔离的;同一个进程中的线程共享同一个内存空间。
  4. 要操作cpu,就必须先创建线程。进程是不能操作cpu的,只有线程才可以;
  5. 读取速度:CPU>RAM>DISK;
  6. CPU主频3.2GHz,那么每秒约 27 亿个时钟周期,如果为单核则每个周期执行 1 条指令,则约每秒执行 27 亿条指令。但实际运算速度取决于 CPU 架构、核心数、IPC、缓存和内存等;
  7. PID进程id;
    任务管理器
    区别:
  8. 内存:一个进程中有主线程,还有其他多个线程,且共享同一个内存;但是进程是独立,内存不可共享;
  9. 通信:两个线程可以直接通信;两个进程中想通信需要找代理人;
  10. 创建:创建线程很简单,但是创建进程需要克隆其父进程;
  11. 操作:一个线程可以控制操作同一个进程下的其他线程;但是进程只能操作其子进程;
  12. 影响:修改进程下的线程可能影响其他线程;但是修改进程不影响其子进程
    微信流程:
    你点击微信图标

    操作系统收到请求

    从磁盘找到微信程序

    创建微信进程,分配 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()

在这里插入图片描述

Logo

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

更多推荐