Python Lock release() Method with Example

Python Lock.release() Method: In this tutorial, we will learn about the release() method of Lock Class in Python with its usage, syntax, and examples. By Hritika Rajput Last updated : April 24, 2023

Python Lock.release() Method

The Lock.release() is an inbuilt method of the Lock class of the threading module, it is used to release the lock which was earlier acquired by a thread. Once the lock is released, only then can it be acquired by another thread. This can be called from any thread, not just from the thread that acquired it. When an unlocked lock is released, a RuntimeError is raised.

Module

The following module is required to use release() method:

import threading

Class

The following class is required to use release() method:

from threading import Lock

Syntax

The following is the syntax of release() method:

release()

Parameter(s)

The following are the parameter(s):

  • None

Return Value

The return type of this method is <class 'NoneType'>. It releases the thread which had acquired it.

Example of Lock.release() Method in Python

# Python program to show
# the use of release() method in Lock class

import threading
import random
                    
class shared(object):
  
    def __init__(self, x = 0):
        # Created a Lock object
        self.lock = threading.Lock()
        self.incr = x
        
        # Increment function for the thread
    def incrementcounter(self):
        print("Waiting for the lock to be unlocked")
        # Lock acquired by the current thread
        self.lock.acquire()
        try:
            print('Lock acquired, current counter value: ', self.incr)
            self.incr = self.incr + 1
        finally:
            print('Lock released, current counter value: ', self.incr)
            # Lock released by the given thread
            self.lock.release()

def helper_thread(c):
    # Getting a random integer between 1 to 3
    r = random.randint(1,3)
    print("Random value selected:", r)
    for i in range(r):
      c.incrementcounter()
    print('Finished', str(threading.current_thread().getName()))
    print()

if __name__ == '__main__':
    obj = shared()

    thread1 = threading.Thread(target=helper_thread, args=(obj,))
    thread1.start()
    
    thread2 = threading.Thread(target=helper_thread, args=(obj,))
    thread2.start()

    thread1.join()
    thread2.join()
    
    print('Final counter value:', obj.incr)

Output

Random value selected: 2
Waiting for the lock to be unlocked
Lock acquired, current counter value:  0
Lock released, current counter value:  1
Waiting for the lock to be unlocked
Lock acquired, current counter value:  1
Lock released, current counter value:  2
Finished Thread-1

Random value selected: 3
Waiting for the lock to be unlocked
Lock acquired, current counter value:  2
Lock released, current counter value:  3
Waiting for the lock to be unlocked
Lock acquired, current counter value:  3
Lock released, current counter value:  4
Waiting for the lock to be unlocked
Lock acquired, current counter value:  4
Lock released, current counter value:  5
Finished Thread-2

Final counter value: 5



Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.