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重试装饰器示例
Feb 11 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
python实现旋转和水平翻转的方法
Oct 25 Python
对python中UDP,socket的使用详解
Aug 22 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
利用python在excel中画图的实现方法
Mar 17 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
Python基础之操作MySQL数据库
May 06 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
基于vue2的table分页组件实现方法
2017/03/20 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
vue2.0之多页面的开发的示例
2018/01/30 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
详解python logging日志传输
2020/07/01 Python
电子邮箱格式怎么写
2014/01/12 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
公开服务承诺制度
2014/03/26 职场文书
个人委托书范本
2014/04/02 职场文书
运动会口号8字
2014/06/07 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
2014年生产部工作总结
2014/12/17 职场文书
个人委托函范文
2015/01/29 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers