从字节数组中部分删除元素,同时从另一个线程添加元素

问题描述 投票:0回答:1

我有 bytearray 对象,两个线程正在访问它,一个生产者和消费者。

生产者写入字节数组:

barr.extend(data)

消费者从字节数组中读取:

barr.find(...)
barr[x:y]

生产者向字节数组添加了大量数据,所以我想偶尔通过

del barr[:last_read_pos]

释放内存

这个操作线程安全吗?

谢谢。

python multithreading thread-safety
1个回答
0
投票

“这个操作线程安全吗?” “是”,但只是由于 GIL(全局解释器锁)。它实际上是不安全的,尽管它可以工作,但不应该这样做。只需使用锁 - 就足够轻松了。

或者,为此构建的队列:添加字节对象作为队列项,而不是扩展字节数组,然后使您的代码一次更简单、更高效,因为扩展字节数组涉及复制字节、重新分配字节有时整个数组,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.