美文网首页
限制每次运行的多线程的数量

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

作者: ___大鱼___ | 来源:发表于2019-05-30 13:40 被阅读0次
# 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()

相关文章

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

  • 多线程之信号量(By C++)

    信号量在多线程中,主要是用于线程的同步或者限制线程运行的数量。 所谓同步,当流程1运行在线程1中,流程2运行在线程...

  • Python多进程

    上一篇多线程文章提到了Global Interpreter Lock的限制,在某些情况下多线程并不能提高程序的运行...

  • 线程池的作用

    线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了...

  • 详解Java中ThreadPool的使用

    线程池就是限制系统中执行线程的数量。我们可以根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少...

  • 线程池

    线程池作用就是限制系统中执行线程的数量。根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪...

  • Caused by: java.lang.IllegalArgu

    原因: 索引创建的类型数量超出限制解决: 修改类型数量限制

  • jvm调优实战:为京东印尼商品服务接口调优

    商品接口运行状况 商品接口是印尼平台的基础服务,运行期间大对象不多,查询接口大多也有分页数量的限制。大boss也为...

  • Java多线程(二)

    多线程 线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是...

  • Java基础之多线程

    什么是多线程?   线程是指程序运行的流程,多线程则是指可以运行一个以上线程的程序,多线程使程序运行的效率变得更高...

网友评论

      本文标题:限制每次运行的多线程的数量

      本文链接:https://www.haomeiwen.com/subject/ukumtctx.html