Python基于多线程实现ping扫描功能示例


Posted in Python onJuly 23, 2018

本文实例讲述了Python基于多线程实现ping扫描功能。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#! python2
import subprocess
from Queue import Queue
import threading
class Pinger(object):
  def __init__(self, ip_list, thread_num=2):
    self._ip_list = ip_list
    self._thread_num = thread_num
    self._queue = Queue(len(ip_list))
  def ping(self, thread_id):
    while True:
      if self._queue.empty():
        break
      addr = self._queue.get()
      print 'Thread %s: Ping %s' % (thread_id, addr)
      ret = subprocess.call('ping -c 1 %s' % (addr),
                 shell=True,
                 stdout=open("/dev/null", 'w'),
                 stderr=subprocess.STDOUT)
      if ret == 0:
        print '%s: is still alive' % addr
      else:
        print '%s: did not respond ' % addr
      self._queue.task_done() #unfinished tasks -= 1
  def run(self):
    for ip in self._ip_list:
      self._queue.put(ip) #unfinished_tasks += 1
    print '---------------------task begin------------------'
    for i in range(self._thread_num):
      thrd = threading.Thread(target=self.ping, args=(i + 1,))
      #thrd.setDaemon(True)
      thrd.start()
    self._queue.join() # 主线程一直阻塞,一直等到Queue.unfiinshed_tasks == 0
    print '---------------------task done-------------------'

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python编写的最短路径算法
Mar 25 Python
Python中的进程分支fork和exec详解
Apr 11 Python
Python对列表排序的方法实例分析
May 16 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
python安装Scrapy图文教程
Aug 14 Python
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
详解python读取和输出到txt
Mar 29 Python
Python logging日志库空间不足问题解决
Sep 14 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 #Python
python定向爬虫校园论坛帖子信息
Jul 23 #Python
python实现图片批量压缩程序
Jul 23 #Python
python中的插值 scipy-interp的实现代码
Jul 23 #Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 #Python
python中的turtle库函数简单使用教程
Jul 23 #Python
Flask框架配置与调试操作示例
Jul 23 #Python
You might like
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
Python中List.count()方法的使用教程
2015/05/20 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
Python识别验证码的实现示例
2020/09/30 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
槐乡的孩子教学反思
2014/04/27 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书