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网络编程学习笔记(一)
Jun 09 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
python实现textrank关键词提取
Jun 22 Python
python实现排序算法解析
Sep 08 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
python实现的读取网页并分词功能示例
Oct 29 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
python中导入 train_test_split提示错误的解决
Jun 19 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操作文件方法问答
2007/03/16 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
js输出阴历、阳历、年份、月份、周示例代码
2014/01/29 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
最新党员的自我评价分享
2013/11/04 职场文书
给酒店员工的表扬信
2014/01/11 职场文书
经典促销广告词大全
2014/03/19 职场文书
户籍证明格式
2014/09/15 职场文书
学习退步检讨书
2014/09/28 职场文书
检讨书怎么写
2015/01/23 职场文书
食堂管理制度范本
2015/08/04 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
MySQL为id选择合适的数据类型
2021/06/07 MySQL
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL