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通过scapy获取局域网所有主机mac地址示例
May 04 Python
Python 中 list 的各项操作技巧
Apr 13 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
django加载本地html的方法
May 27 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
python tkinter canvas使用实例
Nov 04 Python
python小白切忌乱用表达式
May 29 Python
python从Oracle读取数据生成图表
Oct 14 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
分析Python list操作为什么会错误
Nov 17 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
实用函数5
2007/11/08 PHP
php 异常处理实现代码
2009/03/10 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
jQuery功能函数详解
2015/02/01 Javascript
学习jQuey中的return false
2015/12/18 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
Python实现远程调用MetaSploit的方法
2014/08/22 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
几个数据库方面的面试题
2016/07/01 面试题
党校培训自我鉴定
2014/02/01 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
青年志愿者活动总结
2014/04/26 职场文书
企业法人代表任命书
2014/06/06 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
感恩教师主题班会
2015/08/12 职场文书
物业管理交接协议书
2016/03/24 职场文书
600字作文之感受大自然
2019/11/27 职场文书
Python实现打乒乓小游戏
2021/09/25 Python