`

python 线程锁

 
阅读更多

# encoding: UTF-8

import threading

import time

 

data = 0

lock = threading.Lock()

 

def func():

    global data

    print '%s acquire lock...\n' % threading.currentThread().getName()

 

    # 调用acquire([timeout])时,线程将一直阻塞,

    # 直到获得锁定或者直到timeout秒后(timeout参数可选)。

    # 返回是否获得锁。

    if lock.acquire():

        print '%s get the lock.\n' % threading.currentThread().getName()

        data += 1

        time.sleep(1)

        print '%s release lock...\n' % threading.currentThread().getName()

 

        # 调用release()将释放锁。

        lock.release()

 

t1 = threading.Thread(target=func)

t2 = threading.Thread(target=func)

t3 = threading.Thread(target=func)

t1.start()

t2.start()

t3.start()

 

 

输出结果:



 

 

 

 

  • 大小: 14.9 KB
分享到:
评论

相关推荐

    举例讲解Python编程中对线程锁的使用

    #### Python线程锁的基本概念 Python的`threading`模块提供了多种锁机制,包括`Lock`、`RLock`、`Condition`、`Event`和`Semaphore`等。其中最基础的是`Lock`对象,它可以用于保护临界区(Critical Section),确保...

    python3之多线程及线程锁的基础用法

    ### Python3之多线程及线程锁的基础用法 #### Python 多线程库简介 Python 提供了两种方式来支持线程:_thread 和 threading。其中,_thread 库提供了一个较为基础且底层的支持,它包含了创建简单线程的基本功能...

    详解python多线程、锁、event事件机制的简单使用

    线程和进程 1、线程共享创建它的进程的地址空间,进程有自己的地址空间 2、线程可以访问进程所有的数据,线程可以相互访问 3、线程之间的数据是独立的 4、子进程复制线程的数据 5、子进程启动后是独立的 ,父进程...

    Python全局锁中如何合理运用多线程(多进程)

    然而,由于Python的全局解释器锁(Global Interpreter Lock,GIL)的存在,多线程在Python中的表现并不像其他语言那样可以实现真正的并行执行。下面将详细介绍Python全局锁、多线程和多进程的运用策略。 **全局锁...

    python线程锁(thread)学习示例

    复制代码 代码如下:# encoding: UTF-8import threadimport time# 一个用于在线程中执行的函数def func(): for i in range(5): print ‘func’ time.sleep(1) # 结束当前线程 # 这个方法与thread.exit_thread()...

    python线程教程,python线程学习笔记.doc

    在本文中,我们将深入探讨Python线程的基础知识,包括线程如何访问全局变量、线程安全问题、线程同步以及互斥锁的使用。 首先,让我们看看线程如何访问全局变量。在Python中,一个进程内的所有线程共享全局变量。...

    python 线程的使用 python线程基础知识,提供python2示例代码,供参考学习

    需要注意的是,Python中的全局解释器锁(GIL)使得在同一时刻,即使在多核处理器上,Python的线程也无法实现真正的并行计算。这限制了Python在计算密集型任务中的性能,但在I/O密集型任务中,由于线程可以在等待I/O...

    python多线程同步之文件读写控制

    在`lock_test()`函数中,我们创建了一个线程锁,并在读写文件之前获取锁,在完成操作后释放锁。这样确保了在任何时候只有一个线程可以执行读写操作,从而避免了数据竞争。 以下是加锁后的`file_lock.py`示例: ```...

    Python多线程学习

    Python的`threading`模块提供了一种名为`RLock`的递归锁,它可以被同一个线程多次获得而不释放。 **示例代码:** ```python import threading lock = threading.RLock() def safe_function(): with lock: # ...

    python多线程编程实现网络串口透传

    5. **同步与通信**:为了确保线程间的安全通信,可能需要使用线程锁或队列(如`threading.Lock`或`queue.Queue`)。线程锁用于保护共享资源,避免数据竞争;队列则可以安全地在线程间传递数据。 6. **异常处理**:...

    python 线程的五个状态

    Python线程是并发执行任务的重要工具,特别是在处理I/O密集型任务时,通过多线程可以提高程序的响应速度和效率。线程的状态管理是理解并优化多线程程序的关键,下面将详细阐述Python线程的五个状态及其转换。 1. ...

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

    Python的全局解释器锁(GIL)限制了在同一时刻只有一个线程执行Python字节码,这在一定程度上影响了多线程在CPU密集型任务中的并行性能,但在IO密集型任务中仍然能提升效率。 总的来说,Python的多线程编程是一种...

    python多线程定时器

    此外,Python的全局解释器锁(GIL)限制了在同一时刻只有一个线程执行Python字节码,这可能会影响多线程的性能。在CPU密集型任务中,多线程可能无法充分利用多核处理器的优势。在这种情况下,可以考虑使用多进程(`...

    python多线程学习

    - **全局解释器锁(GIL)**:Python的CPython实现中存在GIL,这使得在同一时刻只有一个线程能够执行Python字节码,即使在多核处理器系统中,也限制了多线程并行执行的能力。因此,Python更适合于I/O密集型任务而不是...

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

    由于多线程程序在执行时会共享内存资源,可能会出现多个线程同时访问或修改同一数据资源的情况,这时候就需要使用锁(如互斥锁)来保证数据的一致性。 另外,爬虫程序还需要遵守网站的Robots协议。Robots协议是网站...

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

    多线程并非总是性能提升的关键,由于GIL(全局解释器锁)的存在,Python的多线程在CPU密集型任务上并不能充分利用多核优势。此时,可以考虑使用多进程(`multiprocessing`模块)或者异步IO(`asyncio`模块)来实现...

    python多线程池离线安装包.zip

    在实际应用中,你可能还需要关注多线程的同步问题,如锁机制(Lock)、条件变量(Condition)以及事件对象(Event),以防止数据竞争和死锁,确保程序的正确性。同时,理解线程池的工作原理和调优策略,如合理设置...

    第九周-第10章节-Python3.5-线程锁1.avi

    第九周-第10章节-Python3.5-线程锁1.avi

    第九周-第11章节-Python3.5-线程锁2.avi

    第九周-第11章节-Python3.5-线程锁2.avi

Global site tag (gtag.js) - Google Analytics