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 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
python三大神器之fabric使用教程
Jun 10 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
python sorted方法和列表使用解析
Nov 18 Python
python numpy数组中的复制知识解析
Feb 03 Python
Python列表倒序输出及其效率详解
Mar 04 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Python任务调度模块APScheduler使用
Apr 15 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
js以对象为索引的关联数组
2010/07/04 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
意大利网上药房:Farmacia 33
2020/01/27 全球购物
党员思想汇报范文
2013/12/30 职场文书
食品业务员岗位职责
2014/03/18 职场文书
《春笋》教学反思
2014/04/15 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
学校志愿者活动总结
2014/06/27 职场文书
代领毕业证委托书
2014/08/02 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
活动费用申请报告
2015/05/15 职场文书
毕业赠语大全
2015/06/23 职场文书
医院病假条范文
2015/08/17 职场文书
靠谱的活动总结
2019/04/16 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
python Tkinter的简单入门教程
2021/04/11 Python
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python