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之关于类的初步认识
Oct 11 Python
python连接MySQL数据库实例分析
May 12 Python
python数字图像处理实现直方图与均衡化
May 04 Python
python实现音乐下载的统计
Jun 20 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 Python
Django url 路由匹配过程详解
Jan 22 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查询快递信息的方法
2015/03/07 PHP
jquery 锁定弹出层实现代码
2010/02/23 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python Django模板的使用方法(图文)
2013/11/04 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Python中常用的内置方法
2019/01/28 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
python manage.py runserver流程解析
2019/11/08 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python各种扩展名区别点整理
2020/02/27 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
大学四年规划书范文
2013/12/27 职场文书
四年级下册教学反思
2014/02/01 职场文书
实习生岗位职责
2014/04/12 职场文书
验房委托书
2014/08/30 职场文书
一份文言文检讨书
2014/09/13 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
起诉书范文
2015/05/20 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang