Python3.X 线程中信号量的使用方法示例
作者:FIZLIN 发布时间:2022-06-12 12:07:13
标签:python,线程,信号量
前言
最近在学习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个爬虫是处于活动状态
来源:https://segmentfault.com/a/1190000010314270
0
投稿
猜你喜欢
- 本篇博客参考:1)DEM generation from laser scanner data using adaptive TIN mod
- -- 基本查询select * from pet-- 列出指定的列select name, owner form pet-- 直接进行算术运
- 一直很想做这个效果,原理是监听鼠标滚轮事件;可将此效果继续发散到其他应用上,如图片缩放,页面缩放等。演示:<!DOCTYPE html
- WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同,在Python2.6
- 下面写一下,这两个要是有no了,怎么恢复。。 如果是slave_io_running no了,那么就我个人看有三种情况,一个是网络有问题,连
- 目录一、IPO模型 二、基本输入 - input()函数1、函数格式2、参数说明3、实例演示(1)接收字符串数据(2)接收整型数据
- 使用命令行登录MySQL报错1045 Access denied for user ‘root’@&
- 问题今天在写项目功能的时候,有一个统计金额的情况,然后需要进行单位转换,所以写下了大概如下功能的语句,但得到的数据为小数点后4位精度,正常我
- PyTorch之TensorDatasetTensorDataset 可以用来对 tensor 进行打包,就好像 pyt
- 一、前言首先说,Python中一切皆对象,老生常谈。还有,Python提供了许多特殊方法、元类等等这样的“元编程”机制。像给对象动态添加属性
- 超级鹰平台验证码的破解可以有以下方式:简单的数字字母组合可以使用图像识别(python 现成模块),成功率不高使用第三方打码平台(破解验证码
- 装饰器(Decorators)装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以
- 最近打算开始研究一下机器学习,今天在windows上装tensorflow花了点功夫,其实前面的步骤不难,只要依次装好python3.5,n
- 1、GET方式: # -*- coding: utf-8 -*-#!/usr/bin/python# filename
- Merge函数的用法简单来说Merge函数相当于Excel中的vlookup函数。当我们对2个表进行数据合并的时候需要通过指定两个表中相同的
- 环境:win10+phpstorm2022+phpstudy8+lnmp1、phpinfo(); 查看是否安装xdebug,没有
- 正则表达式处理花括号内容替换赋值@Test public void replaceStr() { &
- 50个常用sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(
- 一、实际场景及解决思路实际场景:比如某个班的数学成绩以字典格式存储为:student_dict = {'xiaoliang'
- 由于个人能力有限,文章中难免会出现错误或遗漏的地方,敬请谅解!同时欢迎你指出,以便我能及时修改,以免误导下一个看官。最后希望本文能给你带来一