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的Django框架中自定义模版标签的示例
Jul 20 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
python for循环输入一个矩阵的实例
Nov 14 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
eclipse创建python项目步骤详解
May 10 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
Jun 30 Python
django rest framework使用django-filter用法
Jul 15 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
django如何自定义manage.py管理命令
Apr 27 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
php intval函数用法总结
2019/04/14 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
Python 多进程原理及实现
2020/12/21 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
大学军训感言
2014/01/10 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
学校周年庆活动方案
2014/08/22 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
教师节获奖感言
2015/07/31 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
教你用python实现12306余票查询
2021/06/30 Python
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫