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获取网页上图片下载地址的方法
Mar 11 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
Python反射用法实例简析
Dec 22 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
详解python中list的使用
Mar 15 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
pycharm快捷键汇总
Feb 14 Python
python缩进长度是否统一
Aug 02 Python
Python之字典添加元素的几种方法
Sep 30 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 04 Python
Python使用UDP实现720p视频传输的操作
Apr 24 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获取金书网的书名的实现代码
2010/06/11 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
python网络编程之读取网站根目录实例
2014/09/30 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python中正则表达式的用法总结
2019/02/22 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
python 如何在测试中使用 Mock
2021/03/01 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
搞笑征婚广告词
2014/03/17 职场文书
2015年组织部工作总结
2015/04/03 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技