问题规范:
我在 python 中运行一些复杂的任务并加快速度,我决定使用 pythons 多处理库。它工作得很好,但过了一段时间我开始想知道,我使用的锁有多少时间,消耗了多少时间,以及进程相互阻塞了多少。
进程结构如下:
一个更新进程之间共享列表的进程。数据更新代码是这样的:
lock.acquire()
list_rex[0] = pat.some_list
list_rex[1] = pat.some_dictionary
lock.release()
其中 list_rex 和 lock 定义为
list_rex = manager.list([[some_elements], {some_elements}])
lock = multi.Lock()
然后有几个进程,偶尔会用这些列表更新自己的内存空间。代码如下:
lock.acquire()
some_list = list_rex[0]
some_dict = list_rex[1]
lock.release()
some_list 和 some_dict 在某种程度上是相关的,所以我不能允许进程在 some_list 中获取来自不同更新的信息,而不是在 some_dict 中。
我的问题是,acquire() 和 release() 方法的速度有多快?就我而言,它们可以在几秒钟内甚至几毫秒内被调用。和/或有什么方法可以避免在我的情况下使用锁?
感谢您的时间。
编辑:在考虑您的评论后,我的问题可能应该是 - 代理列表如何影响我的计算?我在更新后使用“some_list”和“some_dict”确实有很多需要阅读的地方。