实际工作中会遇到有成千上万个任务想使用多线程来完成,而计算机无法同时处理这么多线程,通常来说会因为内存消耗完而无法创建新的线程。
在诸多大佬的博客中找到如下解决方案:

import threading
import timesem=threading.Semaphore(4)  #限制线程的最大数量为4个def gothread():with sem:   #锁定线程的最大数量for i in range(5):print(threading.current_thread().name,i)time.sleep(1)for i in range(5000):threading.Thread(target=gothread).start()

但是该方案无法解决我遇到的问题,内存依然会沾满。通过分析,锁定信号的变量sem在线程内阻塞,等待前面的线程执行结束。就是说实际上有多上任务就会开多少线程,只是超过限制的部分线程在线程内阻塞。内存依然会被消耗殆尽。为了控制最大线程数,达到最大线程时应在线程外阻塞,有线程结束后再创建新线程,改进如下:

import threading
import timesem=threading.Semaphore(4) #限制线程的最大数量为4个def gothread():for i in range(5):print(threading.current_thread().name,i)time.sleep(1)sem.release()for i in range(5000):sem.acquire()threading.Thread(target=gothread).start()

python限制最大线程数(不一样的方法)相关推荐

  1. python判断回文数字,Python判断回文数的三种方法实例

    需求: 从控制台输入一个五位数,如果是回文数就打印"是回文数",否则打印"不是回文数",例如:11111 12321 12221 "回文"是 ...

  2. linux下查看线程数的几种方法

    1. cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H   或者直接输入 top -bH -d 3 -p  ${pid} t ...

  3. python获取pdf页数_Python分割指定页数的pdf文件方法

    Python分割指定页数的pdf文件方法 如下所示: from PyPDF2 import PdfFileWriter, PdfFileReader # 开始页 start_page = 0 # 截止 ...

  4. linux下查看进程的线程数,linux查看进程的线程数

    top -H -p $PID  #查看对应进程的那个线程占用CPU过高 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行 ...

  5. python scrapy框架基如何实现多线程_Python实现在线程里运行scrapy的方法

    本文实例讲述了Python实现在线程里运行scrapy的方法.分享给大家供大家参考.具体如下: 如果你希望在一个写好的程序里调用scrapy,就可以通过下面的代码,让scrapy运行在一个线程里. & ...

  6. 通过设置Weblogic设置线程数提高系统并发

    使用Weblogic版本:Weblogic 11g(10.3.6) 设置Weblogic的线程数有两种方法, 第一种,通过启动参数设置: -Dweblogic.threadpool.MinPoolSi ...

  7. linux 查询系统CPU核数、线程数

    1. 查看CPU型号 ~$ cat /proc/cpuinfo | grep name | sort | uniq model name : Intel(R) Core(TM) i7-6700HQ C ...

  8. Python SSH爆破以及Python3线程池控制线程数

    源自一个朋友的要求,他的要求是只爆破一个ip,结果出来后就停止,如果是爆破多个,完全没必要停止,等他跑完就好 #!usr/bin/env python #!coding=utf-8__author__ ...

  9. python获取电脑几核几线程_python编程测试电脑开启最大线程数实例代码

    本文实例代码主要实现python编程测试电脑开启最大线程数,具体实现代码如下. #!/usr/bin/env python #coding=gbk import threading import ti ...

最新文章

  1. php对接V免签支付教程_【全网首发】最新版影视小程序搭建教程完整版
  2. mysql 左连接_MySQL左连接与右连接
  3. oracle ^]字符,oracle数据中特殊字符处理
  4. 用通俗的语言解释贝叶斯公式
  5. 南京大学计算机科学与技术系陈东东,南京大学2016年硕士生学业奖学金评审结果计算机科学与技术系...
  6. 中级微观经济学:Chap 9 购买和销售
  7. mac抹掉磁盘重装系统未能与服务器取得联系_苹果笔记本怎么重装系统
  8. 【安全】eWebeditor编辑器上传webshell
  9. Android中使用SVG矢量图打造多边形图形框架
  10. Java 下载 Excel模板时,报修正 Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击是
  11. 关于在使用ztree中同级排序的疑问
  12. PTA 7-2 USB接口的定义(接口、接口变量、接口数组)
  13. hostiko模板-WHMCS自适应模板-略站网
  14. 线性回归、lasso回归、岭回归以及弹性网络的系统解释
  15. X86-64指令解析
  16. android 设置背景ah,Ahjesus,
  17. 广州数据中心机房机柜安装施工
  18. STM32f103ZET6引脚通道(ADC和TIM)
  19. PGA内存空间的分配与回收
  20. 怎么把视频里的音乐提取成音频,怎么提取视频中的音频

热门文章

  1. 感知器(perceptron)模型分析及实现
  2. ArcGIS开发基础教程(一):API及服务器配置
  3. C2C平台退换货逆向寄件服务,快递鸟“上门取件“解决方案
  4. 阿雪的学习记录|刷视频记录
  5. mysql慢查询设置
  6. 自组织网络(Ad Hoc Network)——TOPIC 4 IP地址和互联网协议【RIP内容更新】
  7. 总忍不住想接话?原来是你的大脑在疯狂“脑补”下个词丨PNAS
  8. 大胆猜测:今年816全民顾家日埋了3个伏笔?
  9. 图像处理_Ostu算法(大律法、最大类间方差法)
  10. Python网络协议编程之HTTP协议详解