Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Locking a method in Python?

Tags:

Here is my problem: I'm using APScheduler library to add scheduled jobs in my application. I have multiple jobs executing same code at the same time, but with different parameters. The problem occurs when these jobs access the same method at the same time which causes my program to work incorrectly.

I wanna know if there is a way to lock a method in Python 3.4 so that only one thread may access it at a time? If so, could you please post a simple example code? Thanks.

like image 578
DanijelT Avatar asked Aug 25 '16 12:08

DanijelT


1 Answers

You can use a basic python locking mechanism:

from threading import Lock lock = Lock() ...  def foo():     lock.acquire()     try:         # only one thread can execute code there     finally:         lock.release() #release lock 

Or with context managment:

def foo():     with lock:         # only one thread can execute code there 

For more details see Python 3 Lock Objects and Thread Synchronization Mechanisms in Python.

like image 180
Stanislav Ivanov Avatar answered Sep 21 '22 11:09

Stanislav Ivanov