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 21 Python
跟老齐学Python之Python文档
Oct 10 Python
kNN算法python实现和简单数字识别的方法
Nov 18 Python
Python中设置变量作为默认值时容易遇到的错误
Apr 03 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
Python zip()函数用法实例分析
Mar 17 Python
python远程连接MySQL数据库
Apr 19 Python
flask 实现token机制的示例代码
Nov 07 Python
Python  word实现读取及导出代码解析
Jul 09 Python
Python reversed反转序列并生成可迭代对象
Oct 22 Python
PyCharm 解决找不到新打开项目的窗口问题
Jan 15 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和ACCESS写聊天室(十)
2006/10/09 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
突发奇想的一个jquery插件
2010/11/19 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
在python中安装basemap的教程
2018/09/20 Python
对python生成业务报表的实例详解
2019/02/03 Python
Python中请不要再用re.compile了
2019/06/30 Python
python 画函数曲线示例
2019/12/04 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
英语自荐信范文
2013/12/11 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Js类的构建与继承案例详解
2021/09/15 Javascript
Nginx配置之禁止指定IP访问
2022/05/02 Servers