特别注意:
加锁的位置一定要只包住临界资源,如:
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多线程 实例 注释详解 从 Thread 派生出一个子类,创建一个这个子类的实例
在Python编程中,多线程是一种并发执行任务的机制,尤其在处理I/O密集型任务如网络请求时,能够显著提高程序效率。本教程将详细讲解如何使用Python的多线程来实现对多个网址的快速访问,并记录访问结果。 首先,...
本文将深入探讨一个具体的Python多线程实例,该实例展示了如何在Python中实现串行与并行操作,并通过查询数据库的具体场景来说明这两种模式的区别。 #### 一、多线程基础 在讨论具体代码之前,我们先回顾一下多...
Python多线程爬虫爬取电影天堂资源是一个实用且具有挑战的项目。以下是对该项目的详细说明: 1. 项目概述: 该项目旨在使用Python编写一个多线程爬虫程序,从电影天堂网站上爬取电影资源信息,包括电影名称、年份、类型...
Python 多线程实例详解 多线程通常是新开一个后台线程去处理比较耗时的操作,Python做后台线程处理也是很简单的,今天从官方文档中找到了一个Demo. 实例代码: import threading, zipfile class AsyncZip...
总结起来,`python多线程定时器`的实现涉及到Python的`threading`和`time`模块,通过`Thread`和`Timer`类来创建和管理线程,使用定时器控制线程的启动时间。主程序`main.py`使用这些工具来安排多个任务按设定的间隔...
Python多线程编程是利用Python实现程序并行性的一种方式,尤其适合于处理异步、并发事务和资源密集型任务。在多线程环境中,多个线程可以同时执行,提高程序效率,尤其对于那些需要从多个输入源处理数据或者进行大量...
本压缩包“PYthon-multithreading-Test.rar”包含了有关Python多线程测试的源码,旨在帮助用户深入理解和实践Python的线程操作。 Python中的多线程是通过`threading`模块实现的,这个模块提供了基本的线程和同步...
这个是在学习python多线程的时候自己总结的文档,对理解Python多线程非常有帮助,很多都是从官方文档而来的。
本文将深入探讨“单线程与多线程Python爬虫地图瓦片源码”的相关知识点。 首先,我们需要理解“线程”这一概念。线程是程序执行的最小单元,每个线程负责执行特定的任务。在单线程环境中,程序按顺序执行,一次只能...
在这个基于Python的多线程例子中,我们将深入探讨如何创建和管理线程,以及如何利用它们来优化代码性能。 首先,`threadftp.py`很可能是一个演示如何在多线程环境中执行FTP(文件传输协议)操作的脚本。在Python中...
本主题“基于Linux的Python多线程爬虫程序设计”将深入探讨如何在Linux环境下利用Python实现多线程爬虫,以优化网络爬虫的性能。 首先,我们需要了解Python中的多线程。Python的`threading`模块提供了创建和管理...
总结起来,"python selenium chrome 多开 多线程"这个主题涉及到使用Python的Selenium库和Chrome浏览器进行多实例操作,通过多线程来并发执行任务,提升效率。同时,还需要理解Chromedriver和PhantomJS的作用,以及...
总的来说,理解并正确使用锁和可重入锁是解决Python多线程安全问题的关键。在编写多线程程序时,合理地引入锁机制可以防止数据竞争,确保程序的正确性。但同时,过度使用锁可能导致程序的复杂性和性能下降,因此在...
通过分析和学习这个文件,你可以进一步加深对Python多线程编程的理解,包括如何有效地使用线程池(`ThreadPoolExecutor`),以及如何处理线程异常和线程间的协作问题。 总之,Python的多线程编程虽然受到GIL的限制...
### Python多线程Ping服务器在线情况 在现代网络管理和监控任务中,经常需要检查大量服务器的在线状态。传统的逐个Ping方法效率低下且耗时。本文将详细介绍如何使用Python的多线程技术来批量Ping服务器,并高效地...