Как предоставить доступ только для чтения (без копирования) к объекту в одном процессе другому процессу?
Например, на диаграмме ниже, как предоставить Process 2
и Process 3
доступ к классу Tasks
, который находится в Process 1
?
Process 1
— это единственный процесс, который будет писать в класс Tasks
, и не важно поддерживать какое-либо состояние о том, какие задачи были обработаны и т. д.
Process 2 Process 1 Process 3
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| Perform job A for | <----------+ class Tasks +-----------> | Perform job B for |
| task in Tasks | | | | task in Tasks |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
+-------------------+ +-------------------+ +-------------------+
Я думаю, что эти задачи могут включать использование указателей? документация Cython кратко описывает параллелизм.
Как предоставить Process 2
и Process 3
доступ только для чтения, без копирования к классу Tasks
, который находится в Process 1
?
many-PUB-s : many-SUB-s
может предоставить инструмент для удаленно внедренных (таким образом, только для чтения) копий, которые могут пересекать границы процесса без каких-либо нарушений памяти.:o)
очевидно, прекрасное искусство Zen-of-Zero -- то есть -- нулевая копия не будет работать через частную память процесса -границы. - person user3666197   schedule 18.04.2018multiprocessing.Queue
иQueue.Queue
. В приведенном выше примере Process1 добавит в очередь все остальные рабочие процессы. - person danny   schedule 18.04.2018get
удалит и вернет элемент из очереди. Причина только для чтения заключается в том, что для каждого элемента вTasks
есть несколько функций (например,Process 1
иProcess 2
), которым требуется задача в качестве входных данных. Причина отказа от копирования заключается в том, что каждый объект задачи большой и есть много функций, которым требуется ввод, поэтому создание очереди для каждого процесса и копирование объекта задачи каждый раз не является идеальным. - person Greg   schedule 19.04.2018