博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 线程信号量 -5
阅读量:5271 次
发布时间:2019-06-14

本文共 1184 字,大约阅读时间需要 3 分钟。

from atexit import registerfrom random import randrangefrom threading import BoundedSemaphore, Lock, Threadfrom time import sleep,ctimelock = Lock()MAX = 5  # 最大线程数candytray = BoundedSemaphore(MAX)def refill():    lock.acquire()    print('Refilling candy...')    try:        candytray.release()    except ValueError as e:        print('full, skipping', e)    else:        print('ok')    lock.release()def buy():    lock.acquire()    print('Buying candy...')    if candytray.acquire(False):        print('ok')    else:        print('empty, skipping')    lock.release()def producer(loops):    for i in range(loops):        refill()  # 添加        sleep(randrange(3))def consumer(loops):    for i in range(loops):        buy()  # 购买        sleep(randrange(3))def _main():    print('starting at:', ctime())    nloops = randrange(2,6)    print(nloops)    print('THECHADY MACHINE (full with %d bars)!' % MAX)    Thread(target=consumer, args=(randrange(nloops,nloops+MAX+2),)).start() # buyer    Thread(target=producer, args=(nloops,)).start()@registerdef _atexit():    print('all DONE at:', ctime())if __name__ == '__main__':    _main()

  

转载于:https://www.cnblogs.com/412013cl/p/10218280.html

你可能感兴趣的文章
css3学习01
查看>>
【USACO】 奶牛会展
查看>>
继承和多态
查看>>
Dijkstra+计算几何 POJ 2502 Subway
查看>>
修复IE不能执行JS的方法
查看>>
程序员究竟该如何提高效率zt
查看>>
希尔排序法(缩小增量法)
查看>>
PHP编程基础学习(一)——数据类型
查看>>
MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
查看>>
NPOI处理Word文本中上下角标
查看>>
Android笔记 Handler
查看>>
如何阅读大型前端开源项目的源码(转)
查看>>
java.util.Arrays类详解
查看>>
idea搭建tocmat
查看>>
NYOJ-626-intersection set(二分查找)
查看>>
项目管理之路(1):初步踏入项目管理
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
echarts饼图显示百分比
查看>>
JMS消息
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>