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的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
python之Socket网络编程详解
Sep 29 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
numpy matrix和array的乘和加实例
Jun 28 Python
Python如何访问字符串中的值
Feb 09 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
Python socket如何解析HTTP请求内容
Feb 12 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
js实现秒表计时器
2019/12/16 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
广州某公司软件工程师面试题
2014/12/22 面试题
2015年收银员个人工作总结
2015/04/01 职场文书
作息时间调整通知
2015/04/22 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
干部培训简讯
2015/07/20 职场文书
AJAX学习笔记
2021/05/18 Javascript
深入理解Pytorch微调torchvision模型
2021/11/11 Python
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技