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文件的md5加密方法
Apr 06 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
Python中多线程的创建及基本调用方法
Jul 08 Python
TensorFlow如何实现反向传播
Feb 06 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
python实现AES加密解密
Mar 28 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
python反编译学习之字节码详解
May 19 Python
浅谈TensorFlow之稀疏张量表示
Jun 30 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
python中实现栈的三种方法
Dec 19 Python
对Keras自带Loss Function的深入研究
May 25 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 编写的 25个游戏脚本
2009/05/11 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
js友好的时间返回函数
2016/08/24 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
Python实现从订阅源下载图片的方法
2015/03/11 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
python逆序打印各位数字的方法
2018/06/25 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
python实现控制台输出彩色字体
2020/04/05 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
毕业生实习鉴定
2013/12/11 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
作风建设整改方案
2014/10/27 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
消防宣传标语大全
2015/08/03 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
Python合并多张图片成PDF
2021/06/09 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python