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 max内置函数详细介绍
Nov 17 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
python+opencv实现动态物体识别
Jan 09 Python
python用match()函数爬数据方法详解
Jul 23 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
pyinstaller还原python代码过程图解
Jan 08 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
python 双循环遍历list 变量判断代码
May 04 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 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往windows中添加用户
2006/12/06 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
VueJS全面解析
2016/11/10 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python实现排序算法
2014/02/14 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
python 求定积分和不定积分示例
2019/11/20 Python
python访问hdfs的操作
2020/06/06 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
入学生会自荐书范文
2014/02/05 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
办公室个人总结
2015/02/28 职场文书