多线程与线程数控制
1 #!/usr/bin/python 2 #coding:utf-8 3 import threading 4 import datetime 5 import logging 6 import time 7 import random 8 9 logging.basicConfig(level = logging.DEBUG,format='(%(threadName)-10s) %(message)s',) 10 list = ['192.168.0.0', '192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.4', '192.168.0.5', '192.168.0.6', '192.168.0.7', '192.168.0.8', '192.168.0.9', 11 '192.168.0.10', '192.168.0.11', '192.168.0.12', '192.168.0.13', '192.168.0.14', '192.168.0.15', '192.168.0.16', '192.168.0.17', '192.168.0.18'] 12 class Test(threading.Thread): 13 def __init__(self,threadingSum, ip): 14 threading.Thread.__init__(self) 15 self.ip = ip 16 self.threadingSum = threadingSum 17 18 def run(self): 19 with self.threadingSum: 20 logging.debug("%s start!" % self.ip) 21 time.sleep(random.randint(1,3)) 22 logging.debug('%s Done!' % self.ip) 23 24 25 if __name__ == "__main__": 26 #设置线程数 27 threadingSum = threading.Semaphore(3) 28 29 #启动线程 30 for ip in list: 31 t = Test(threadingSum,ip) 32 t.start() 33 #等待所有线程结束 34 for t in threading.enumerate(): 35 if t is threading.currentThread(): 36 continue 37 t.join() 38 39 logging.debug('Done!')