Python 多处理冲突添加到列表

Python Multiprocessing conflicting adds to List

我正在使用 python Process class 让多个对象处理多张图片,然后在给定对象完成后将图片附加到共享列表。

但是,结果是如果创建了三个对象,我一次只能在列表中看到一张图片。我从不从列表中删除图片。似乎每个 .append() 的新图片都在删除以前的图片。我将如何处理这个问题?

谢谢。

由于全局解释器锁 (GIL),Python 列表和字典在同一进程中是线程安全的。也许您可以为每个进程分派一个列表或字典容器来存储该进程的响应,然后在 process.join() 之后将这些项目追加回主进程中的列表?这样您就不会在多个进程之间共享同一个列表,而是在他们完成每个进程后加入他们。

你也可以使用一个Queue,它既是线程安全的又是进程安全的。