У меня есть процесс, который каждую секунду делает HTTP-запрос на получение некоторого API. Затем этот процесс выполняет какую-то работу со строкой JSON, возвращаемой из запроса. В то же время я хочу передать эту JSON строку другому процессу, чтобы сделать что-то еще.
Ключевым моментом является то, что я хочу продолжать добавлять каждую новую строку JSON в конец массива так что все строки JSON сохраняются в памяти на время выполнения программы.
Я ищу возможность использовать каналы или mmap для обмена строками JSON, поскольку это, кажется, самый быстрый способ. знать о. Однако похоже, что конвейеры будут выполнять больше работы, чем необходимо, потому что мне придется отправлять строки, которые кажутся ненужными, поскольку они уже находятся в памяти.
Я думал, что mmap сможет избежать этой проблемы, если я смогу просто сопоставьте массив с обоими процессами. Я не хочу, чтобы строки записывались в настоящий файл на диске, поэтому мне пришлось бы использовать анонимное сопоставление, но кажется, что анонимные сопоставления создают область, которая обнуляется, а затем мне придется скопировать свой массив в сопоставленную память регион для обмена данными. Это тоже кажется ненужной работой, потому что я дублирую память.
Есть ли способ, которым я могу просто предоставить второму процессу доступ к массиву строк без дублирования строк или копирования? Я не могу использовать потоки, хотя потоки могут легко совместно использовать память, потому что процесс, выполняющий запросы REST, будет программой на C ++, а второй процесс будет программой Python.