Python多处理锁。acquire()即使释放锁,也会保持阻塞,甚至返回True

Python多处理锁。acquire()即使释放锁,也会保持阻塞,甚至返回True,python,multiprocessing,Python,Multiprocessing,我有下面的代码 将多处理导入为mp 导入时间 def f(l,a): 打印(“获取f中的锁定”) l、 获得 时间。睡眠(2) 尝试: a、 put([2,3]) a、 得到() print(“在fais:,a.get()) 最后: l、 释放() 打印(“刚刚释放f锁”) def g(l,a): 打印(“获取g锁”) 时间。睡眠(1) 打印(l.acquire()) 尝试: print(“在g中是:,a.get()) 最后: 打印(“最后打印”) l、 释放() 如果uuuu name uuu

我有下面的代码

将多处理导入为mp
导入时间
def f(l,a):
打印(“获取f中的锁定”)
l、 获得
时间。睡眠(2)
尝试:
a、 put([2,3])
a、 得到()
print(“在fais:,a.get())
最后:
l、 释放()
打印(“刚刚释放f锁”)
def g(l,a):
打印(“获取g锁”)
时间。睡眠(1)
打印(l.acquire())
尝试:
print(“在g中是:,a.get())
最后:
打印(“最后打印”)
l、 释放()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
l=mp.RLock()
data=mp.Queue()
data.put([1])
p1=mp.Process(目标=f,参数=(l,数据))
p2=mp.Process(目标=g,参数=(l,数据))
p1.开始()
p2.start()
p2.join()
p1.join()
l、 获得
输出显示g()中的Lock.acquire()不允许进一步执行,即使在其他地方释放锁时返回True也是如此。你知道这里出了什么问题吗?我使用了Lock而不是RLock,没有打印acquire()返回值的结果,没有使用try和finally块,但总是得到相同的结果

$ python first.py 
Acquiring lock in f
Acquiring lock in g
In f a is:  [2, 3]
Just released lock in finally
True

可能是因为
l.acquire()
实际工作,而
a.get()
被阻塞了吗?这肯定是问题所在!非常感谢。