Python 3.x 在Python中锁定方法?

Python 3.x 在Python中锁定方法?,python-3.x,locking,scheduler,apscheduler,Python 3.x,Locking,Scheduler,Apscheduler,我的问题是:我正在使用APScheduler库在应用程序中添加计划作业。我有多个作业同时执行相同的代码,但参数不同。当这些作业同时访问相同的方法时,就会出现问题,这会导致我的程序无法正常工作 我想知道是否有一种方法可以在Python3.4中锁定一个方法,以便一次只有一个线程可以访问它?如果是这样的话,你能发布一个简单的示例代码吗?谢谢。您可以使用基本的python锁定机制: from threading import Lock lock = Lock() ... def foo():

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


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

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

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

def foo():
    lock.acquire()
    try:
        # only one thread can execute code there
    finally:
        lock.release() #release lock
或使用上下文管理:

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

有关更多详细信息,请参阅和。

锁支持上下文管理协议,您通常应该推广这种用法,而不是显式方法调用。