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中__call__方法示例分析
Oct 11 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
Feb 26 Python
python实现维吉尼亚加密法
Mar 20 Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
什么是Python中的匿名函数
Jun 02 Python
python flask框架快速入门
May 14 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写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python3对接mysql数据库实例详解
2019/04/30 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
Skyscanner波兰:廉价航班
2017/11/07 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
在求职信中如何凸显个人优势
2013/10/30 职场文书
高中军训的心得体会
2014/09/01 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫