Python3.X 线程中信号量的使用方法示例

发布时间 - 2026-01-11 02:29:00    点击率:

前言

最近在学习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个爬虫是处于活动状态

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# python  # 多线程  # 信号量  # 线程信号量  # 线程  # 使用  # Python的互斥锁与信号量详解  # python实现事件驱动  # python模拟事件触发机制详解  # Python线程条件变量Condition原理解析  # python条件变量之生产者与消费者操作实例分析  # python信号量  # 条件变量和事件详解  # 发现该  # 这篇文章  # 在一  # 谢谢大家  # 多说  # 将给  # 爬去  # 下午  # 是用来  # 有疑问  # maxconnections  # pool_sema  # github  # connect  # https  # mail  # acquire  # threads  # call 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 利用python获取某年中每个月的第一天和最后一天  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Android仿QQ列表左滑删除操作  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  如何在阿里云虚拟服务器快速搭建网站?  如何在IIS中新建站点并解决端口绑定冲突?  如何在新浪SAE免费搭建个人博客?  MySQL查询结果复制到新表的方法(更新、插入)  大连 网站制作,大连天途有线官网?  如何快速选择适合个人网站的云服务器配置?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何用PHP快速搭建高效网站?分步指南  如何在建站宝盒中设置产品搜索功能?  用v-html解决Vue.js渲染中html标签不被解析的问题  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在万网自助建站平台快速创建网站?  如何快速搭建FTP站点实现文件共享?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Swift开发中switch语句值绑定模式  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何在阿里云域名上完成建站全流程?  如何快速查询网址的建站时间与历史轨迹?  如何确认建站备案号应放置的具体位置?  jQuery validate插件功能与用法详解  LinuxCD持续部署教程_自动发布与回滚机制  网站制作壁纸教程视频,电脑壁纸网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  浅析上传头像示例及其注意事项  Swift中switch语句区间和元组模式匹配  *服务器网站为何频现安全漏洞?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  JavaScript实现Fly Bird小游戏  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel怎么实现验证码(Captcha)功能  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在阿里云完成域名注册与建站?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  千库网官网入口推荐 千库网设计创意平台入口