Python继承类的方式达成多线程及控制线程数
发布时间:2021-12-13 11:08:36 所属栏目:教程 来源:互联网
导读:继承threading.Thread,并重写run方法实现多线程,这里用到logging日志模块是为了输出好看一些,直接print的话会几行叠在一起,不好看: #!/usr/bin/Python #coding:utf-8 import threading import datetime import logging import time logging.basicConfig(
继承threading.Thread,并重写run方法实现多线程,这里用到logging日志模块是为了输出好看一些,直接print的话会几行叠在一起,不好看: #!/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!') 运行结果: Python继承类的方式实现多线程及控制线程数 接着用Semaphore去控制线程数: #!/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方法,满足日常工作。 ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |