Locking a method in Python?

ぐ巨炮叔叔 提交于 2019-11-28 04:12:34

问题


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.


回答1:


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.



来源:https://stackoverflow.com/questions/39145796/locking-a-method-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!