线程、进程和协程 概念

线程定义:线程就是操作系统中能够进行运算的最小单位,被包含在进程当中,线程是进程的实际操作单位

用到的包 threading

用到的函数

启动线程start()

添加阻塞join()

获取当前所在线程信息current_thread()

当前活跃线程数active_count()

把子线程变成主线程中的守护线程,当主线程结束后,子线程也会随之结束,一旦主线程代码执行完毕,程序就结束了,如果没有添加守护线程,当主线程执行完毕之后,会等待子线程中的任务执行完成之后,再退出程序

使用的函数是setDaemon(True)

线程安全锁,用于锁定资源

from threading import Lock

acqurie()对资源进行加锁

release()释放资源

RLock()递归锁,用法和lock一样,递归锁可以进行锁嵌套

BoundedSemaphore(3)互斥锁,只允许一个线程对资源进行修改,信号量允许一定量的线程对资源进行处理

线程事件,主线程控制其他线程的执行

event = threading.Event()创建事件对象

event.set()

event.clear()

enent.is_set()

event.wait()

定时器Timer() 两个参数,1.多少秒之后执行。2.执行的操作

--------------------------------------------分割-------------------------------------------------------------

进程。一个程序运行的实例就是一个进程,每一个进程都提供了程序运行所需要的一些资源

每一个进程都会产生一个线程,即主线程,在主线程中再创建一些子线程

进程之间的数据是不共享的,如果要进行数据通信可以通过Queue或Pipe

另os模块中有一个getpid()函数,可以查看进程的id

Manager可以用来实现进程中的数据共享,manager会通过一个进程,来使其他的进程通过代理的方法操作python对象

进程锁和线程锁一样。

进程池,进程的开启是需要消耗一定资源的,使用多进程的时候会消耗大量的内存功能,为了防止上面这种情况,使用进程池开启多进程。

线程的开启占用的资源比较少,多线程只会导致cpu切换线程的频繁时,系统变慢,卡顿

进程池有同步apply()和异步apply_async()两种任务

--------------------------------------------------分割---------------------------------------------------------------------

协程,协程可以认为是一个微线程,就是只有一个线程,对一个线程进行分解,在一个线程中规定某些任务执行的顺序,当有些任务不需要使用cpu操作时(IO),可以使用协程

from greenlet import greenlet

switch()切换

GIL全局解释器,相当于每一个进程都配有的一把锁,也因为有GIL的存在,python没有真正意义上的多线程


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值