在Python中锁定方法?

Dan*_*elT 6 locking scheduler python-3.x apscheduler

这是我的问题:我正在使用APScheduler库在我的应用程序中添加预定作业.我有多个作业同时执行相同的代码,但具有不同的参数.当这些作业同时访问相同的方法导致我的程序不正常工作时,会出现问题.

我想知道是否有办法在Python 3.4中锁定一个方法,这样一次只有一个线程可以访问它?如果是这样,你能发一个简单的示例代码吗?谢谢.

Sta*_*nov 13

您可以使用基本的python锁定机制:

from threading import Lock
lock = Lock()
...

def foo():
    lock.acquire()
    try:
        # only one thread can execute code there
    finally:
        lock.release() #release lock
Run Code Online (Sandbox Code Playgroud)

或者使用上下文管理:

def foo():
    with lock:
        # only one thread can execute code there
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅Python中的Python 3锁定对象线程同步机制.