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实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
python使用PyGame模块播放声音的方法
May 20 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
python写一个md5解密器示例
Feb 23 Python
Python异常的检测和处理方法
Oct 26 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
python自动下载图片的方法示例
Mar 25 Python
Python-jenkins模块获取jobs的执行状态操作
May 12 Python
python属于解释型语言么
Jun 15 Python
Python无损压缩图片的示例代码
Aug 06 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
两个php日期控制类实例
2014/12/09 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
python计算时间差的方法
2015/05/20 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
pycharm安装及如何导入numpy
2020/04/03 Python
python有几个版本
2020/06/17 Python
python实现邮件循环自动发件功能
2020/09/11 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
文科教师毕业的自我评价
2014/01/16 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
高三家长寄语
2014/04/03 职场文书
财务负责人任命书
2014/06/06 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
理想国读书笔记
2015/06/25 职场文书