相关疑难解决方法(0)

可以优先锁定吗?

我有一个multiprocessing程序在哪里

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

multiprocessing.Lock()在添加到列表或从中删除时实现了锁定(via ).由于有一个"馈线"过程和几个(10-40个)"消费者"过程都在争夺锁定,并且消费者流程很快,我最终得到的"馈线"过程很难获得锁定.

获得锁定时是否存在"优先级"的概念?我希望"馈线"流程能够比其他流程更优先获得它.

现在我通过让"消费者"进程在尝试获取锁定之前等待一段随机时间来缓解这个问题,而"馈送"进程就在那里(当它结束时设置一个标志).这是一个有效的解决方法,但它很丑陋并且几乎没有效果(我有进程等待random.random()*n几秒钟,n进程数量在哪里.这是一个完全编号,可能是错误的).

python multiprocessing python-3.x python-multiprocessing

13
推荐指数
1
解决办法
814
查看次数