Python继承类的方式实现多线程及控制线程数
继承threading.Thread,并重写run方法实现多线程,这里用到logging日志模块是为了输出好看一些,直接print的话会几行叠在一起,不好看:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/usr/bin/python
#coding:utf-8
import threading
import datetime
import logging
import time
logging.basicConfig(level = logging.DEBUG, format = '(%(threadName)-10s) %(message)s' ,)
list = [ '192.168.1.1' , '192.168.1.2' ]
class Test(threading.Thread):
def __init__( self ,ip):
threading.Thread.__init__( self )
self .ip = ip
def run( self ):
logging.debug( "%s start!" % self .ip)
time.sleep( 5 )
logging.debug( '%s Done!' % self .ip)
if __name__ = = "__main__" :
#启动线程
for ip in list :
t = Test(ip)
t.start()
#等待所有线程结束
for t in threading. enumerate ():
if t is threading.currentThread():
continue
t.join()
logging.debug( 'Done!' )
|
运行结果:
接着用Semaphore去控制线程数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#!/usr/bin/python
#coding:utf-8
import threading
import datetime
import logging
import time
logging.basicConfig(level = logging.DEBUG, format = '(%(threadName)-10s) %(message)s' ,)
list = [ '192.168.1.1' , '192.168.1.2' ]
class Test(threading.Thread):
def __init__( self ,threadingSum, ip):
threading.Thread.__init__( self )
self .ip = ip
self .threadingSum = threadingSum
def run( self ):
with self .threadingSum:
logging.debug( "%s start!" % self .ip)
time.sleep( 5 )
logging.debug( '%s Done!' % self .ip)
if __name__ = = "__main__" :
#设置线程数
threadingSum = threading.Semaphore( 1 )
#启动线程
for ip in list :
t = Test(threadingSum,ip)
t.start()
#等待所有线程结束
for t in threading. enumerate ():
if t is threading.currentThread():
continue
t.join()
logging.debug( 'Done!' )
|
运行结果:
接下来就根据需要来扩展run方法,满足日常工作。
本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/1322247如需转载请自行联系原作者
lihuipeng
Python继承类的方式实现多线程及控制线程数相关推荐
- Shell多线程操作及线程数控制实例
来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...
- python多线程_python多线程:控制线程数量
背景 前段时间学习了python的多线程爬虫,当时爬取一个图片网站,开启多线程后,并没有限制线程的数量,也就是说,如果下载1000张图片,会一次性开启1000个子线程同时进行下载 现在希望控制线程数量 ...
- Python SSH爆破以及Python3线程池控制线程数
源自一个朋友的要求,他的要求是只爆破一个ip,结果出来后就停止,如果是爆破多个,完全没必要停止,等他跑完就好 #!usr/bin/env python #!coding=utf-8__author__ ...
- linux脚本多线程,Shell多线程操作及线程数控制实例
前言 在业务开发过程中,经常会在后台写一些shell脚本处理数据,但估计很多人不知道shell脚本也可以支持多线程,而且非常简单.本篇文章主要就是介绍shell实现多进程以及进程数量控制. 需求 为了 ...
- 继承Thread类的方式创建多线程
package MoreThread;public class MoreThread implements Runnable{@Overridepublic void run() {for(int i ...
- python 继承并定制父类的初始化方法,python 继承类的初始化用法
Python 中,子类B继承父类A时候会用class B(A):的代码形式声明B. class A: def __init__(self, x=1, y=2): self.x = x self.y = ...
- Shell(6): 多线程操作及线程数
任务需要:当我需要对一个文件夹中的文件,分别压缩的时候: 原始的代码: 1 #!/usr/bin/shell 2 function getdir(){ 3 for element in `ls $1` ...
- Java多线程学习(二)---线程创建方式
线程创建方式 摘要: 1. 通过继承Thread类来创建并启动多线程的方式 2. 通过实现Runnable接口来创建并启动线程的方式 3. 通过实现Callable接口来创建并启动线程的方式 4. 总 ...
- 线程实现的方式、多线程模型
文章目录 前言 一.用户级线程 二.内核级线程 三.组合实现 四.多线程模型 1.多对一模型 2.一对一模型 3.多对多模型 前言 参考文章:https://blog.csdn.net/qq_4060 ...
最新文章
- 火狐 4 月全球使用量首超微软
- Java Web整合开发(14) -- Struts 1.x 概述
- Python 学习笔记之字典(进阶篇)
- java中文 x_java环境url中文参数乱码处理
- Android笔记——在布局文件中插入另一个布局文件
- Foxmail怎么诊断邮件的状态
- git命令详解( 六 )
- 兼容M1芯片 Denise Audio poltergate Mac - 侧链均衡器
- 【Perl系列】之一:Perl编程语言入门篇
- ipad2 白苹果惊魂
- 腾达无线usb wifi 网卡u1/u3 RTL8192EU在centos7.6/7.7的编译适配
- 电子计算机主机房国标,中华人民共和国国家标准电子计算机机房设计规范
- Failed to open the host Key database file
- 60岁首席工程师被SpaceX边缘化,主管:我怕他退休或死了
- html中pc端与移动端区别,盘点移动端和PC端交互设计上的区别
- 基于Android的医院预约挂号系统,基于Android的医院预约挂号系统设计与实现
- java连不上sqlserver_java和SQL连接不上——解决步骤
- 零基础入门网络渗透到底要怎么学?
- clip-path 绘制五角星
- 中国石油大学(华东)数据分析(Python)
热门文章
- ubuntu建立向windows一样的快捷方式
- bim 模型web页面展示_BIM+装配式建筑工程师2020年必须拿下的技能证书
- 5 华为兼容性 双指缩放_华为EMUI10“滚屏翻译”之背后的学问
- python如何让图片镜像翻转_98后常春藤学霸林之秋,一作拿下CVPR最佳论文提名,首次挑战图片翻转不变性假设...
- php 获取文件扩展名的方法,PHP获取文件扩展名的4种方法,_PHP教程
- 三个变量互换值_Python3 教程 变量类型
- 4g能达到多少兆_“吃鸡”无敌战神以后,还有其他段位存在吗?最高能达到多少星?...
- mysql主从异步复制_centos7mysql主从复制(默认异步)
- linux 密码策略设置,设置Linux密码策略
- oracle 11g 忘记了sys,system,scott密码