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 03 Python
通过数据库向Django模型添加字段的示例
Jul 21 Python
python3新特性函数注释Function Annotations用法分析
Jul 28 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
Python程序退出方式小结
Dec 09 Python
python通过elixir包操作mysql数据库实例代码
Jan 31 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
python3+selenium自动化测试框架详解
Mar 17 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
利用Python校准本地时间的方法教程
Oct 31 Python
python绘制BA无标度网络示例代码
Nov 21 Python
python ubplot使用方法解析
Jan 10 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里得到前天和昨天的日期的代码
2007/08/16 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
jQuery 选择器理解
2010/03/16 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
Python中for循环控制语句用法实例
2015/06/02 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
顶撞老师检讨书
2014/02/07 职场文书
优秀护士获奖感言
2014/02/20 职场文书
绿色小区申报材料
2014/08/22 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
Linux中sftp常用命令整理
2022/06/28 Servers