Python中进程和线程的相同不同以及使用问题

进程和线程的使用问题

一. 对进程线程怎么理解/说说进程线程的差异

他们的意义: 充分利用CPU的多核资源,同时处理多个应用程序任务,以此提高程序的运行效率。
进程 : 程序在计算机中的一次运行。
(程序是一个可执行的文件,是静态的占有磁盘)
进程是一个动态的过程描述,占有计算机运行资源,有一定的生命周期
进程的三态:
就绪态 : 进程具备执行条件,等待分配cpu资源
运行态 : 进程占有cpu时间片正在运行
等待态 : 进程暂时停止运行,让出cpu

线程:
【1】 线程被称为轻量级的进程
【2】 线程也可以使用计算机多核资源,是多任务编程方式
【3】 线程是系统分配内核的最小单元
【4】 线程可以理解为进程的分支任务
线程特征
【1】 一个进程中可以包含多个线程
【2】 线程也是一个运行行为,消耗计算机资源
【3】 一个进程中的所有线程共享这个进程的资源
【4】 多个线程之间的运行互不影响各自运行
【5】 线程的创建和销毁消耗资源远小于进程
【6】 各个线程也有自己的ID等特征

区别联系:

  1. 两者都是多任务编程方式,都能使用计算机多核资源
  2. 进程的创建删除消耗的计算机资源比线程多
  3. 进程空间独立,数据互不干扰,有专门通信方法;线程使用全局变量通信
  4. 一个进程可以有多个分支线程,两者有包含关系
  5. 多个线程共享进程资源,在共享资源操作时往往需要同步互斥处理
  6. 进程线程在系统中都有自己的特有属性标志,如ID,代码段,命令集等。

二. 进程间通信知道哪些,有什么特点

管道 消息队列 共享内存 信号 信号量 套接字

  1. Queue用于多个进程间实现通信,Pipe是两个进程的通信
  2. 共享内存:在内中开辟一块空间,进程可以写入内容和读取内容完成通信,但是每次写入内容会覆盖之前内容。
  3. 信号量(信号灯集):给定一个数量对多个进程可见。多个进程都可以操作该数量增减,并根据数量值决定自己的行为。
    参考博客:
    https://www.cnblogs.com/maplethefox/p/10989182.html

Queue消息队列: 在内存中建立队列模型,进程通过队列将消息存入,或者从队列取出完成进程间通信。
Queue() q.put() q.get()

三. 什么是同步互斥,你什么情况下使用,怎么用

线程同步互斥方法

  1. 线程 Event
    from threading import Event
    e = Event()-----------创建线程event对象
    e.wait([timeout])—阻塞等待e被set
    e.set()-----------------设置e,使wait结束阻塞
    e.clear() --------------使e回到未被设置状态
    e.is_set()--------------查看当前e是否被设置

  2. 线程锁 Lock
    from threading import Lock
    lock = Lock() -------------创建锁对象
    lock.acquire() -----------上锁 如果lock已经上锁再调用会阻塞
    lock.release() ------------解锁
    with lock:-----------------上锁
    with-------------------- ----代码块结束自动解锁

四. 给一个情形,说说用进程还是线程,为什么

五. 问一些概念,僵尸进程的处理,GIL问题,进程状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python进程线程和协程是实现并发编程的不同方式。 1. 进程(Process)是操作系统分配资源的基本单位,每个进程有独立的内存空间,互不干扰。进程之间的通信需要使用特定的机制,如管道、消息队列等。在Python,可以使用`multiprocessing`模块创建和管理进程。 2. 线程(Thread)是进程内的独立执行流,一个进程可以包含多个线程,它们共享相同的内存空间。线程之间的通信比进程更方便,可以使用共享内存或者全局变量。然而,由于全局解释器锁(GIL)的存在,同一时间只有一个线程在执行Python字节码,因此多线程在CPU密集型任务并不能提高性能。但是对于I/O密集型任务,多线程可以提升效率。Python内置的`threading`模块提供了对线程的支持。 3. 协程(Coroutine)是一种轻量级的线程,由程序控制在特定位置进行挂起和恢复的并发执行。协程能够在执行过程被暂停和继续,并且可以通过yield语句进行交互式通信。Python的协程通过生成器函数(generator function)和`asyncio`库来实现。 总结一下: - 进程是资源分配的基本单位,进程之间资源独立,通信复杂。 - 线程进程内的执行流,共享内存,通信相对方便,但受到GIL的限制。 - 协程是一种轻量级的线程,可以在特定位置挂起和恢复执行,并通过yield语句进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值