当前位置:主页 > python教程 > 关于Python3.X线程中信号量的使用详解

Python3.X线程中信号量的使用实例讲解

发布:2019-09-16 20:37:28 217


为找教程的网友们整理了相关的编程文章,网友堵哲思根据主题投稿了本篇教程内容,涉及到Python3.X、使用、信号、关于Python3.X线程中信号量的使用详解相关内容,已被565网友关注,涉猎到的知识点内容可以在下方电子书获得。

关于Python3.X线程中信号量的使用详解

信号量semaphore 是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数。下面这篇文章主要给大家介绍了关于Python3.X 线程中信号量的使用方法,需要的朋友可以参考借鉴,下面来一起看看吧。

 

前言

最近在学习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线程中信号量的使用详解

总结

以上就是关于Python3.X线程中信号量的使用详解的详细内容,更多请关注码农之家其它相关文章!


参考资料

相关文章

  • 关于jQuery.Validate表单验证插件的使用教程

    发布:2020-02-11

    jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。接下来通过本文给大家介绍jQuery.Validate表单验证插件的使


  • 如何使用conda和pip批量安装Python包

    发布:2023-04-22

    这篇文章主要介绍了如何使用conda和pip批量安装Python包问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • Python使用itchat 功能分析微信好友性别和位置

    Python使用itchat 功能分析微信好友性别和位置

    发布:2022-09-12

    给大家整理一篇关于Python的教程,这篇文章主要介绍了 Python使用itchat 功能分析微信好友性别和位置 的相关资料,需要的朋友可以参考下


  • Python中time库的使用(日期时间)

    发布:2023-04-20

    time库是python中处理时间的标准库,这篇文章主要介绍了Python中time库的使用(日期时间),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • Pandas分组聚合之使用自定义函数方法transform()、apply()

    发布:2023-04-26

    Pandas具有很多强大的功能,transform就是其中之一,利用它可以高效地汇总数据且不改变数据行数,下面这篇文章主要给大家介绍了关于Pandas分组聚合之使用自定义函数方法transform()、apply()的相关资料,需要的朋友可以参考下


  • try-cache-finally读取文件错误try-with-resources使用方法

    发布:2023-04-06

    这篇文章主要为大家介绍了try-cache-finally读取文件错误try-with-resources使用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Python如何使用logging为Flask增加logid

    发布:2022-09-07

    为网友们分享了关于Python的教程,这篇文章主要介绍了Python如何使用logging为Flask增加logid,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下


  • Java两大工具库Commons和Guava使用示例详解

    发布:2023-04-10

    这篇文章主要为大家介绍了Java两大工具库Commons和Guava使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


网友讨论