设为首页 加入收藏

TOP

Python继承类的方式实现多线程及控制线程数
2014-11-24 02:29:31 来源: 作者: 【 】 浏览:1
Tags:Python 继承 方式 实现 线程 控制

继承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方法,满足日常工作。


推荐阅读:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用 Chrome 开发工具调试 PhoneG.. 下一篇LiteIDE 开发工具指南 (Go语言开..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: