限制每次运行的多线程的数量

# coding: utf-8

# semaphore 用于控制进入数量的锁
# 文件,读、写, 写一般只允许有一个  读可以有多个 我们想限制读的数量应该怎么办

import threading
import time


class HtmlSpider(threading.Thread):
    def __init__(self, url, sem):
        super().__init__()
        self.url = url
        self.sem = sem

    def run(self):
        time.sleep(2)
        print('success')
        self.sem.release()


class UrlProduct(threading.Thread):
    def __init__(self, sem):
        super().__init__()
        self.sem = sem

    def run(self):
        for i in range(20):
            self.sem.acquire()
            html_thread = HtmlSpider('https://www.zhijinyu.com/{}/'.format(i), self.sem)
            html_thread.start()

if __name__ == '__main__':
    # 限制每次线程最高并发数量
    sem = threading.Semaphore(value=3)
    url_thread = UrlProduct(sem)
    url_thread.start()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容