Python多线程--(1)之基本概念

多线程


线程与进程


进程(重量级进程):一个执行中的程序。拥有自己的地址空间、内存、数据栈以及用于跟踪执行的辅助数据。进程可以派生新的进程来执行其他任务,进程之间只能采用进程间通信(IPC)的方式共享信息。

线程(轻量级进程):在同一进程下进行,可以共享相同的上下文。线程一般是并行方式执行的。主线程+各个线程。


threading模块

Thread:一个线程的对象,含有:name,ident,daemon,init()、start()、run()、join()、getName()、setName()。可以选择将Thread直接实例化传入target函数和args参数。或者将threading.Thread子类化,然后使用子类。

Lock:锁原语
支持守护线程,也就是,守护线程是不需要主线程等待它结束的。在treading中用thread.daemon=True就会将线程标记为守护线程。子线程会继承父线程的守护标记


同步原语
一般在多线程代码中,会有一些特定的函数或代码块不希望被多个线程同时进行,(通常包括修改数据库、更新文件或其他会产生竞态条件的情况)此时就需要同步。

:两种状态分别是锁定和未锁定,支持两种函数,获得锁和释放锁。当多线程竞争锁时,先得到锁的线程进入临界区执行代码,其余线程被阻塞等待锁释放后再次竞争。获得锁是随机的,会根据Python的实现的不同有所区别。

信号量:它是一个计数器。当资源消耗是递减,资源释放是递增。代表资源是否可用。当一个线程对一个资源完成操作时,该资源会返回资源池中。acquire和release。信号量比锁更加灵活,因为可以有多个线程,每个线程拥有有限资源的一个实例。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值