Python3.X 线程中信号量的使用方法示例


Posted in Python onJuly 24, 2017

前言

最近在学习python,发现了解线程信号量的基础知识,对深入理解python的线程会大有帮助。所以本文将给大家介绍Python3.X线程中信号量的使用方法,下面话不多说,来一起看看详细的介绍:

方法示例

线程中,信号量主要是用来维持有限的资源,使得在一定时间使用该资源的线程只有指定的数量

# -*- coding:utf-8 -*-
""" Created by FizLin on 2017/07/23/-下午10:59
 mail: https://github.com/Fiz1994
 信号量

 maxconnections = 5
...
pool_sema = BoundedSemaphore(value=maxconnections)
Once spawned, worker threads call the semaphore's acquire and release methods when they need to connect to the server:

pool_sema.acquire()
conn = connectdb()
... use connection ...
conn.close()
pool_sema.release()


"""
import threading
import time
import random

sites = ["https://www.baidu.com/", "https://github.com/Fiz1994", "https://stackoverflow.com/",
   "https://www.sogou.com/",
   "http://english.sogou.com/?b_o_e=1&ie=utf8&fr=common_index_nav&query="] * 20
sites_index = 0
maxconnections = 2
pool_sema = threading.BoundedSemaphore(value=maxconnections)


def test():
 with pool_sema:
  global sites_index, sites
  url = str(sites[sites_index])
  k = random.randint(10, 20)
  print("爬去: " + url + " 需要时间 : " + str(k))
  sites_index += 1
  # print(url)
  time.sleep(k)
  print('退出 ', url)


for i in range(100):
 threading.Thread(target=test).start()

可以发现该程序中,永远只有2个爬虫是处于活动状态

Python3.X 线程中信号量的使用方法示例

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python读取注册表中值的方法
Apr 08 Python
Python3实现的字典遍历操作详解
Apr 18 Python
Python生成器generator用法示例
Aug 10 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
python 实现简易的记事本
Nov 30 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
详解python中的异常捕获
Dec 15 Python
python中添加模块导入路径的方法
Feb 03 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
Python实现双向链表
May 25 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 #Python
老生常谈进程线程协程那些事儿
Jul 24 #Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 #Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 #Python
apache部署python程序出现503错误的解决方法
Jul 24 #Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 #Python
Python实现购物程序思路及代码
Jul 24 #Python
You might like
我的论坛源代码(十)
2006/10/09 PHP
php实现文件下载实例分享
2014/06/02 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
javascript add event remove event
2008/04/07 Javascript
分页栏的web标准实现
2011/11/01 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
详解Python异常处理中的Finally else的功能
2017/12/29 Python
浅析Python数据处理
2018/05/02 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
婚礼证婚人证婚词
2014/01/13 职场文书
初中校园之声广播稿
2014/01/15 职场文书
投资建议书模板
2014/05/12 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
2014年团队工作总结
2014/11/24 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
js实现自动锁屏功能
2021/06/02 Javascript