python中多线程同步实现

import threading
import time

# python 实现线程同步:Event、(R)Lock、semaphore、barricade、condition

# Event 使用:e.set() e.clear() e.is_set() e.wait()
def event_usage():  # 主要就set设置event为True,clear变false,wait 用于等待True,is_set来判断是否为True
    l = []
    e = threading.Event()

    def pro():
        while True:
            l.append(1)
            print('adding ', l)
            time.sleep(1)
            if len(l) == 5:
                print(l)
                e.set()  # set之后Event 为True,可以让另一个线程使用

    def con():
        while True:
            e.wait()  # 先等待Event 变成True
            print('grab all ~~')
            l.clear()
            e.clear()  # 完成之后用clear再把event 变成False ,继续等待adding

    p = threading.Thread(target=pro)
    c = threading.Thread(target=con)
    p.start()
    c.start()


# Lock的使用: acquire 默认blocking=True,timeout=-1 上锁,不能用 。 使用release 释放就能使用
# 注意 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值