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 21 Python
python连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
Python标准库内置函数complex介绍
Nov 25 Python
Python 记录日志的灵活性和可配置性介绍
Feb 27 Python
python 对字典按照value进行排序的方法
May 09 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
python开发入门——set的使用
Sep 03 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Python排序算法之插入排序及其优化方案详解
Jun 11 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
解析htaccess伪静态的规则
2013/06/18 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
php字符串过滤与替换小结
2015/01/26 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
jquery 列表双向选择器之改进版
2013/08/09 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
解密Python中的描述符(descriptor)
2015/06/03 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python中print和return的作用及区别解析
2019/05/05 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
保险专业求职信
2014/07/07 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
校运动会广播稿300字
2014/10/07 职场文书
单位委托书
2014/10/15 职场文书
企业战略合作意向书
2015/05/08 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
毕业实习单位意见
2015/06/04 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python