【发布时间】:2018-10-25 20:32:31
【问题描述】:
我正在尝试使用锁作为上下文来管理同步文件操作。但是,当一个函数调用另一个需要锁的函数时,我最终会永远阻塞。
例如:
from threading import Lock
lock = Lock()
def foo():
print('foo')
with lock:
print('foo-locked')
bar()
def bar():
print('bar')
with lock:
print("bar-locked") # Will not print since lock is owned by foo()
foo()
有没有一种简洁的方法可以将一个函数的上下文传递给另一个函数?我宁愿不将锁作为参数发送 - 然后我会在某些函数中使用上下文管理器,而不是在其他函数中。
【问题讨论】:
-
对我来说,尝试从另一个函数的锁中调用使用锁的函数似乎是设计上的冲突。尝试设计不重叠的代码部分/功能,然后可以使用锁来确保互斥。
-
你知道你的例子是单线程的,所以在这里使用锁没有意义吗?
-
是的!只是为了解决问题。
标签: python multithreading locking