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从sqlite读取并显示数据的方法
May 08 Python
Python基于select实现的socket服务器
Apr 13 Python
Python日志模块logging基本用法分析
Aug 23 Python
python实时获取外部程序输出结果的方法
Jan 12 Python
Django实现学生管理系统
Feb 26 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
Django静态资源部署404问题解决方案
May 11 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
python实现剪贴板的操作
Jul 01 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
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
prototype class详解
2006/09/07 Javascript
HTML中事件触发列表与解说
2007/07/09 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
八年级音乐教学反思
2014/01/09 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
导游词之昭君岛
2020/01/17 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
nginx容器方式反向代理实战
2022/04/18 Servers