`
忧里修斯
  • 浏览: 436120 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Python多线程实例

阅读更多
特别注意:
加锁的位置一定要只包住临界资源,如:
self.stateLock.acquire()
tstate = self.state
self.stateLock.release()

class NetworkMgr(object):
    '''
        网络设置管理
    '''
    
    def __init__(self):
        
        self.state = True
        self.getThread = None
        self.stateLock = threading.RLock()
        self.sleeptime = 3
        self.thdRun = False
        self.start_ping_thread()
    
    def start_ping_thread(self):
        '''
                    开启获取网络连接的线程
        '''
        self.thdRun = True
        self.getThread = threading.Thread(target = NetworkMgr.ping_network, kwargs = {'me':self})
        self.getThread.setDaemon(True)
        self.getThread.start()
        
    def get_network_state(self):
        '''
                    获取网络状态
                    返回值:
            0:连接正常。-1:连接失败
        '''
        tstate = True
        self.stateLock.acquire()
        tstate = self.state
        self.stateLock.release()
        return tstate
        
    @staticmethod
    def ping_network(me):
        '''
        ping网络连接,成功将self.state置为0,失败将self.state置为-1
        '''
        while me.thdRun:
            
            node = 'us.i-dong.com'
            alive = 0; timeout = 1.0; ipv6 = 0; count = 4#默认ping4次
            flood = 0; size = IdongPing.ICMP_DATA_STR
            ret = IdongPing.pingNode(alive, timeout, ipv6, count, node, flood, size)
            me.stateLock.acquire()
            me.state = ret
            me.stateLock.release()
            sleep(me.sleeptime)
分享到:
评论

相关推荐

    python多线程 实例 注释详解

    python 多线程 实例 注释详解

    Python 多线程编程实例

    Python 多线程编程实例,一个综合示例

    python多线程实例

    多线程实例,测试案例,对多线程编程理解可以进一步加深

    python多线程 实例Thread 派生子类,创建子类实例

    python多线程 实例 注释详解 从 Thread 派生出一个子类,创建一个这个子类的实例

    python 多线程实现多个网址的多次快速访问

    在Python编程中,多线程是一种并发执行任务的机制,尤其在处理I/O密集型任务如网络请求时,能够显著提高程序效率。本教程将详细讲解如何使用Python的多线程来实现对多个网址的快速访问,并记录访问结果。 首先,...

    python 多线程串行和并行的实例

    本文将深入探讨一个具体的Python多线程实例,该实例展示了如何在Python中实现串行与并行操作,并通过查询数据库的具体场景来说明这两种模式的区别。 #### 一、多线程基础 在讨论具体代码之前,我们先回顾一下多...

    python多线程爬虫爬取电影天堂资源

    Python多线程爬虫爬取电影天堂资源是一个实用且具有挑战的项目。以下是对该项目的详细说明: 1. 项目概述: 该项目旨在使用Python编写一个多线程爬虫程序,从电影天堂网站上爬取电影资源信息,包括电影名称、年份、类型...

    Python 多线程实例详解

    Python 多线程实例详解 多线程通常是新开一个后台线程去处理比较耗时的操作,Python做后台线程处理也是很简单的,今天从官方文档中找到了一个Demo. 实例代码: import threading, zipfile class AsyncZip...

    python多线程定时器

    总结起来,`python多线程定时器`的实现涉及到Python的`threading`和`time`模块,通过`Thread`和`Timer`类来创建和管理线程,使用定时器控制线程的启动时间。主程序`main.py`使用这些工具来安排多个任务按设定的间隔...

    Python多线程编程(6寸)[归纳].pdf

    Python多线程编程是利用Python实现程序并行性的一种方式,尤其适合于处理异步、并发事务和资源密集型任务。在多线程环境中,多个线程可以同时执行,提高程序效率,尤其对于那些需要从多个输入源处理数据或者进行大量...

    PYthon-multithreading-Test.rar_python_python 多线程_python多线程_多线程

    本压缩包“PYthon-multithreading-Test.rar”包含了有关Python多线程测试的源码,旨在帮助用户深入理解和实践Python的线程操作。 Python中的多线程是通过`threading`模块实现的,这个模块提供了基本的线程和同步...

    Python多线程编程详细示例

    这个是在学习python多线程的时候自己总结的文档,对理解Python多线程非常有帮助,很多都是从官方文档而来的。

    单线程与多线程python爬虫地图瓦片源码

    本文将深入探讨“单线程与多线程Python爬虫地图瓦片源码”的相关知识点。 首先,我们需要理解“线程”这一概念。线程是程序执行的最小单元,每个线程负责执行特定的任务。在单线程环境中,程序按顺序执行,一次只能...

    基于python的多线程例子,详细介绍了多线程处理

    在这个基于Python的多线程例子中,我们将深入探讨如何创建和管理线程,以及如何利用它们来优化代码性能。 首先,`threadftp.py`很可能是一个演示如何在多线程环境中执行FTP(文件传输协议)操作的脚本。在Python中...

    基于Linux的python多线程爬虫程序设计.zip

    本主题“基于Linux的Python多线程爬虫程序设计”将深入探讨如何在Linux环境下利用Python实现多线程爬虫,以优化网络爬虫的性能。 首先,我们需要了解Python中的多线程。Python的`threading`模块提供了创建和管理...

    python selenium chrome 多开 多线程

    总结起来,"python selenium chrome 多开 多线程"这个主题涉及到使用Python的Selenium库和Chrome浏览器进行多实例操作,通过多线程来并发执行任务,提升效率。同时,还需要理解Chromedriver和PhantomJS的作用,以及...

    Python应用实战:python多线程-多线程安全问题&lock与rlock.zip

    总的来说,理解并正确使用锁和可重入锁是解决Python多线程安全问题的关键。在编写多线程程序时,合理地引入锁机制可以防止数据竞争,确保程序的正确性。但同时,过度使用锁可能导致程序的复杂性和性能下降,因此在...

    python 多线程编程

    通过分析和学习这个文件,你可以进一步加深对Python多线程编程的理解,包括如何有效地使用线程池(`ThreadPoolExecutor`),以及如何处理线程异常和线程间的协作问题。 总之,Python的多线程编程虽然受到GIL的限制...

    python多线程ping服务器在线情况

    ### Python多线程Ping服务器在线情况 在现代网络管理和监控任务中,经常需要检查大量服务器的在线状态。传统的逐个Ping方法效率低下且耗时。本文将详细介绍如何使用Python的多线程技术来批量Ping服务器,并高效地...

Global site tag (gtag.js) - Google Analytics