我的问题是:我正在使用APScheduler库在我的应用程序中添加定时作业。我有多个作业同时执行相同的代码,但具有不同的参数。当这些作业同时访问相同的方法时,会导致我的程序工作不正确。
我想知道是否有一种方法可以锁定Python 3.4中的方法,以便一次只能有一个线程访问它?如果有,请提供一个简单的示例代码。谢谢。
我的问题是:我正在使用APScheduler库在我的应用程序中添加定时作业。我有多个作业同时执行相同的代码,但具有不同的参数。当这些作业同时访问相同的方法时,会导致我的程序工作不正确。
我想知道是否有一种方法可以锁定Python 3.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
更多细节请参见Python 3 Lock Objects和Python中的线程同步机制。