Python基于多线程实现ping扫描功能示例

 更新时间:2018年07月23日 14:51:27   作者:wanlifeipeng  
这篇文章主要介绍了Python基于多线程实现ping扫描功能,结合实例形式分析了Python多线程与进程相关模块调用操作技巧,需要的朋友可以参考下

本文实例讲述了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 Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • python3.5 email实现发送邮件功能

    python3.5 email实现发送邮件功能

    这篇文章主要为大家详细介绍了python3.5 email实现发送邮件功能,包含txt、图片、HTML、附件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 使用Pandas对数据进行筛选和排序的实现

    使用Pandas对数据进行筛选和排序的实现

    这篇文章主要介绍了使用Pandas对数据进行筛选和排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python实现Linux下守护进程的编写方法

    Python实现Linux下守护进程的编写方法

    这篇文章主要介绍了Python实现Linux下守护进程的编写方法,比较实用的一个技巧,需要的朋友可以参考下
    2014-08-08
  • python中range()与xrange()用法分析

    python中range()与xrange()用法分析

    这篇文章主要介绍了python中range()与xrange()用法,结合实例形式分析了range()与xrange()使用与效率上的区别,需要的朋友可以参考下
    2016-09-09
  • python selenium操作cookie的实现

    python selenium操作cookie的实现

    这篇文章主要介绍了python selenium操作cookie的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python中json.dumps()和json.loads()的用法

    python中json.dumps()和json.loads()的用法

    json.dumps()和json.loads() json.dumps()用于将字典形式转换为字符串,下面这篇文章主要给大家介绍了关于python中json.dumps()和json.loads()用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Django实现文件上传和下载功能

    Django实现文件上传和下载功能

    这篇文章主要为大家详细介绍了Django下完成文件上传和下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 浅谈一下Python中的with用法

    浅谈一下Python中的with用法

    这篇文章主要介绍了浅谈一下Python中的with用法,有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式,需要的朋友可以参考下
    2023-04-04
  • 一文教你学会使用Python中的多处理模块

    一文教你学会使用Python中的多处理模块

    Python 多处理模块是一个强大的工具,用于实现并行处理,提高程序的性能和效率,本文将详细介绍 Python 中多处理模块的使用方法,希望对大家有所帮助
    2024-01-01
  • 手把手教你使用Python解决简单的zip文件解压密码

    手把手教你使用Python解决简单的zip文件解压密码

    本文主要介绍了Python解决简单的zip文件解压密码,使用的核心模块是python标准库中的zipfile模块。具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11

最新评论