在Python的多处理中,无锁队列是否可行?

时间:2018-09-24 09:57:46

标签: python multiprocessing python-multiprocessing

作为一项学习练习,我想在Python中实现无锁队列,作为进行IPC的一种方式。我已经按照here中的建议,使用UNIX-Sockets实现了SPMC队列。 它运行得很好,在SPSC场景中,按顺序生产/消费,我达到了约17.7万个操作。

但是我现在想知道是否有一种通过共享内存方法进行IPC的方法。我真的很想避免使用锁,因此想到了无锁。由于我不希望使用锁,因此无法选择多处理管理器。

我现在的策略是实例化具有多处理ctypes的类。结构具有头和尾指针以及用于实现作为单链表的数据数组。 据我了解,为了保证排队和出队操作的原子性,我将必须包装一些自定义C代码,因为Python在这方面不能保证原子性。因此,我将直接在类中实现这些东西。

该类将被传递给应该对其进行访问的任何子进程。

毕竟,我应该能够使用自定义原子操作更改队列,并且每个进程都应该看到相同的内容。

我想提出一些建议,以便确定我的策略是否可行以及是否遗漏了一些关键信息。

0 个答案:

没有答案