- 论坛徽章:
- 1
|
再次请教。。。因为要测试的ip很多,这里用到了threading,但感觉没看明白。。。,以下是遇到的一个问题,请不吝指教!- #!/usr/bin/env python
- import os
- import time
- from threading import Thread
- class myThread(Thread):
- def __init__(self,ip):
- Thread.__init__(self)
- self.ip = ip
- def run(self):
- global ping_ok
- global ping_fail
- if os.system('ping -c 1 %s >/dev/null 2>&1' % self.ip) == 0:
- print '%s \t ok!' % self.ip
- ping_ok += 1
- else:
- print '%s \t bad!' % self.ip
- ping_fail += 1
- ping_fail = 0
- ping_ok = 0
- total = len(range(1,255))
- print time.ctime()
- for num in range(1,255):
- ip = '192.168.30.' + str(num)
- doip = myThread(ip)
- doip.start()
- print time.ctime()
- print ping_ok,ping_fail,total
复制代码 这里针对一个c网段进行ping测试,并得到最终结果,但输出是:
Fri Apr 30 17:43:03 2010
192.168.30.8 ok!
192.168.30.1 ok!
192.168.30.5 ok!
192.168.30.69 ok!
192.168.30.100 ok!
192.168.30.147 ok!
Fri Apr 30 17:43:04 2010
6 0 254
192.168.30.10 bad!
192.168.30.12 bad!
....
....
ping通的数据有记录到,但ping不通的则没有记录!
threading好像没有等到最后的线程数据返回就执行最后的print了。
但如果加上doip.join()等待线程返回。。。过程则跟没有使用threading一样。。。相当慢
请问这里应该如何修改?or 哪里有问题? |
|