在Python中,如何安全地从列表中删除元素?
我有一个异步例程,该例程始终将元素添加到列表(即类字段),而另一个异步例程则根据某些条件从此列表中删除元素。这两个例程可能同时运行。因此,我想知道像代码是同步的那样删除元素是否安全-即使用del
。如果没有,我应该怎么做?
答案 0 :(得分:0)
这听起来像Producer-Consumer Problem。为了解决此问题,您需要进行进程间通信。在这种情况下,您通常可以使用semaphore。
Wikipedia上的(伪代码)解决方案如下所示:
semaphore fillCount = 0; // items produced
semaphore emptyCount = BUFFER_SIZE; // remaining space
def producer:
while True:
item = produceItem();
down(emptyCount);
putItemIntoBuffer(item);
up(fillCount);
def consumer:
while True:
down(fillCount);
item = removeItemFromBuffer();
up(emptyCount);
consumeItem(item);
我认为这是进一步探索并在Python中实现它的一个很好的起点。