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 03 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
numpy.random.seed()的使用实例解析
Feb 03 Python
python实现移位加密和解密
Mar 22 Python
python集合常见运算案例解析
Oct 17 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 Python
call在Python中改进数列的实例讲解
Dec 09 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 魔术方法详解
2014/11/11 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
Python运算符重载用法实例
2015/05/28 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python中模块string.py详解
2017/03/12 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
董事长岗位职责
2013/11/30 职场文书
社会实践活动总结报告
2014/04/29 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
个人委托书怎么写
2014/09/17 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
电力工程合作意向书
2015/05/11 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
python数字图像处理实现图像的形变与缩放
2022/06/28 Python