gpt4 book ai didi

python - 是否可以优先锁定锁?

转载 作者:太空狗 更新时间:2023-10-29 17:51:24 27 4
gpt4 key购买 nike

我有一个多处理程序,其中

  • 一个进程将元素添加到共享列表 (multiprocessing.Manager().list())
  • 其他几个进程使用该列表中的这些元素(并删除它们);它们一直运行,直到列表中有要处理的内容,并且上面的过程仍在添加到列表中。

我在添加到列表或从列表中删除时实现了锁定(通过 multiprocessing.Lock())。由于有一个“feeder”进程和几个(10-40)个“consumer”进程都在争夺锁,而且consumer进程速度很快,所以我最终得到“feeder”进程很难获得锁。

获取锁时有“优先级”的概念吗?我希望“feeder”进程比其他进程优先获取它。

现在我通过让“消费者”进程在尝试获取锁之前随机等待一段时间来缓解这个问题,而“供给”进程在那里(当它结束时它设置一个标志)。这是一个可行的解决方法,但它很难看且几乎没有效果(我让进程等待 random.random()*n 秒,其中 n 是进程数。这是一个完全编造的数字,可能是错误的)。

最佳答案

使Feeder获取锁阻塞,消费者非阻塞。
所以对于喂食器:

try:
with my_lock.acquire(): #locks block by default
do stuff
finally:
my_lock.release()

消费者:

while True:
try:
locked = my_lock.acquire(blocking=False)
if locked:
do stuff
finally:
if locked:
my_lock.release()
time.sleep(seconds=10)

关于python - 是否可以优先锁定锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39254040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com