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文件处理
Feb 29 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
python中csv文件的若干读写方法小结
Jul 04 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
python区分不同数据类型的方法
Oct 14 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 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 error_log 函数的使用
2009/04/13 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php模板引擎技术简单实现
2016/03/15 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python对象体系深入分析
2014/10/28 Python
python 容器总结整理
2017/04/04 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
服务之星事迹材料
2014/05/03 职场文书
公司任命书范本
2014/06/04 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
golang定时器
2022/04/14 Golang