python多线程threading使用Semaphore或BoundedSemaphore实现并发限制
来源:互联网 发布:js获取div自定义属性 编辑:程序博客网 时间:2024/06/11 12:14
信号量:
class threading.Semaphore([value])
values是一个内部计数,values默认是1,如果小于0,则会抛出 ValueError 异常,可以用于控制线程数并发数
1.acquire([blocking])
2.release()
例如:
可用用来限制数据库的连接数
maxconnections = 5...pool_sema = BoundedSemaphore(value=maxconnections)pool_sema.acquire()conn = connectdb()... use connection ...conn.close()pool_sema.release()
例如:
# encoding: UTF-8import threadingimport timedef showfun(n): print "%s start -- %d"%(time.ctime(),n) print "working" time.sleep(2) print "%s end -- %d" % (time.ctime(), n) semlock.release()if __name__ == '__main__': maxconnections = 5 semlock = threading.BoundedSemaphore(maxconnections) list=[] for i in range(8): semlock.acquire() t=threading.Thread(target=showfun, args=(i,)) list.append(t) t.start()
结果:
Sat May 27 02:43:00 2017 start -- 0workingSat May 27 02:43:00 2017 start -- 1workingSat May 27 02:43:00 2017 start -- 2workingSat May 27 02:43:00 2017 start -- 3workingSat May 27 02:43:00 2017 start -- 4workingSat May 27 02:43:02 2017 end -- 0Sat May 27 02:43:02 2017 end -- 1Sat May 27 02:43:02 2017 end -- 2Sat May 27 02:43:02 2017 end -- 3Sat May 27 02:43:02 2017 end -- 4Sat May 27 02:43:02 2017 start -- 5workingSat May 27 02:43:02 2017 start -- 6workingSat May 27 02:43:02 2017 start -- 7workingSat May 27 02:43:04 2017 end -- 5Sat May 27 02:43:04 2017 end -- 6Sat May 27 02:43:04 2017 end -- 7
线程数限制到5个,因此等待0-4完毕之后5-7才能请求到资源进行执行
阅读全文
0 0
- python多线程threading使用Semaphore或BoundedSemaphore实现并发限制
- python—threading.Semaphore和BoundedSemaphore【threading模块介绍04】
- python模块学习(threading模块中的Semaphore类和BoundedSemaphore类)
- 关于Python的进程线程协程之threading模块(二)Lock,RLock对象以及Semaphore,BoundedSemaphore对象
- Python:使用threading模块实现多线程编程
- Python:使用threading模块实现多线程编程
- Python:使用threading模块实现多线程
- Python:使用threading模块实现多线程
- Python:使用threading模块实现多线程
- [Python]多线程--threading模块实现
- python模块threading实现多线程
- Python:使用threading模块实现多线程编程一[综述]
- Python:使用threading模块实现多线程编程六[可重入锁RLock]
- Python:使用threading模块实现多线程编程一[综述]
- Python:使用threading模块实现多线程编程六[可重入锁RLock]
- Python:使用threading模块实现多线程(转)
- Python:使用threading模块实现多线程(转)
- Python:使用threading模块实现多线程(转)
- python多线程中Lock()与RLock()锁
- java中的判断(if语句switch语句)
- 第十三周leetcode题
- python使用threading.condition实现生产者消费者
- javascript不同的循环方式
- python多线程threading使用Semaphore或BoundedSemaphore实现并发限制
- 393. UTF-8 Validation
- 颜色类HSSFColor
- python多线程threading事件对象event实现线程阻塞及timer时间对象
- 阿里云服务器安装完apache通过IP访问无反应
- js中的map()方法
- IPC实现机制(一)---pipe(匿名管道)
- java自定义异常
- Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误