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装饰器计算函数运行时间的实例
Apr 21 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
python文字转语音的实例代码分析
Nov 12 Python
python 读取数据库并绘图的实例
Dec 03 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
Python实现弹球小游戏
Aug 01 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
opencv检测动态物体的实现
Jul 21 Python
关于python类SortedList详解
Sep 04 Python
Python标准库pathlib操作目录和文件
Nov 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/10/09 PHP
PHP 数组基础知识小结
2010/08/20 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
js 事件小结 表格区别
2007/08/13 Javascript
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python随机生成数模块random使用实例
2015/04/13 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
为什么称python为胶水语言
2020/06/16 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
什么是反射?如何实现反射?
2016/07/25 面试题
小学生家长评语大全
2014/02/10 职场文书
大学信息公开实施方案
2014/03/09 职场文书
党员个人党性分析材料
2014/12/18 职场文书
2016年国培研修日志
2015/11/13 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
Python 数据可视化之Matplotlib详解
2021/11/02 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL