在异步编程中安全地删除列表元素?

2024-04-26 05:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,如何安全地从列表中删除元素? 我有一个总是将元素添加到列表(即类字段)的异步例程和另一个根据特定条件从列表中删除元素的异步例程。这两个例程可以同时运行。因此,我想知道删除元素是否安全,就好像代码是同步的一样-即与del。如果不是,我该怎么做


Tags: 代码元素列表例程del特定条件
1条回答
网友
1楼 · 发布于 2024-04-26 05:39:27

听起来像是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中实现它

相关问题 更多 >