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遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
安装dbus-python的简要教程
May 05 Python
简单实现Python爬取网络图片
Apr 01 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
Django Rest framework之认证的实现代码
Dec 17 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
Python如何脚本过滤文件中的注释
May 27 Python
Python绘制组合图的示例
Sep 18 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
PHP4之真OO
2006/10/09 PHP
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
说说PHP的autoLoad自动加载机制
2012/09/27 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Pytorch之保存读取模型实例
2019/12/30 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
一组SQL面试题
2016/02/15 面试题
易程科技软件测试笔试
2013/03/24 面试题
土地转让协议书
2014/04/15 职场文书
反邪教标语
2014/06/23 职场文书
个人委托函范文
2015/01/29 职场文书
销售员岗位职责
2015/02/10 职场文书
债务纠纷起诉书
2015/05/20 职场文书
Java线程的6种状态与生命周期
2022/05/11 Java/Android