python线程join,同步

多线程中join()的用法

含代码
 join()所完成的工作就是线程同步,即主线程任务结束之后,进入阻塞状态,一直等待其他的子线程执行结束之后,主线程在终止。
 设置守护线程时,主线程一旦执行结束,则将杀死子线程。不设置时,主线程结束,子线程依然可以继续执行。

global关键字

 若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global。

线程同步

 启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行:
 多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,因此,线程之间共享数据最大的危险在于多个线程同时改一个变量。
 要给change_it()(函数)上一把锁,当某个线程开始执行change_it()时,我们说,该线程因为获得了锁,因此其他线程不能同时执行change_it(),只能等待,直到锁被释放后,获得该锁以后才能改。
 Thread 对象的 Lock 和 Rlock 可以实现简单的线程同步,这两个对象都有 acquire 方法和 release 方法,对于那些需要每次只允许一个线程操作的数据,可以将其操作放到 acquire 和 release 方法之间。
 由于可以存在多个锁,不同的线程持有不同的锁,并试图获取对方持有的锁时,可能会造成死锁,导致多个线程全部挂起,既不能执行,也无法结束,只能靠操作系统强制终止。

threading.Semaphore

 添加一个计数器功能,来限制一个时间点内的线程数量。 计数器不能小于0,当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。Semaphore用于控制进入数量的锁,控制同时进行的线程,内部是基于Condition来进行实现的
https://www.cnblogs.com/callyblog/p/11147456.html

threading.Timer

 创建的是一个线程,实现延迟一段时间重复调用函数。
https://www.pynote.net/archives/1783

Queue

  • 可以使用队列来实现线程间的同步,https://www.runoob.com/python3/python3-multithreading.html
  • 实现多线程间通讯,让各个线程共享数据,生产者把任务放到Queue中,供消费者(线程)去使用。https://blog.csdn.net/weixin_42625143/article/details/95064782
    https://blog.csdn.net/iamaiearner/article/details/9363837

queue中的put/get , put_nowait/get_nowait,https://blog.csdn.net/qq_32446743/article/details/80067013

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值