Saltar al contenido

Cómo usar la memoria compartida en Python y C / C ++

Solución:

Quizás shmget y shmat no son necesariamente las interfaces más adecuadas para su uso. En un proyecto en el que trabajo, proporcionamos acceso a un demonio a través de una API de C y Python usando memoria asignada archivos, lo que nos brinda una forma muy rápida de acceder a los datos

El orden de las operaciones es algo así:

  • el cliente hace un door_call() para decirle al demonio que cree una región de memoria compartida
  • el demonio crea de forma segura un archivo temporal
  • el demonio open()sy luego mmap()s ese archivo
  • el demonio devuelve el descriptor de archivo al cliente a través de door_return()
  • el cliente mmap()s el descriptor de archivo y asocia variables colocadas consecutivamente en una estructura con ese fd
  • el cliente realiza las operaciones que necesita en esas variables, cuando es necesario.
  • el demonio lee de la región compartida y hace sus propias actualizaciones (en nuestro caso, escribe valores de esa región compartida en un archivo de registro).

Nuestros clientes hacen uso de una biblioteca para manejar los primeros 5 pasos anteriores; la biblioteca viene con envoltorios de Python que usan ctypes para exponer exactamente qué funciones y tipos de datos se necesitan.

Para su espacio problemático, si es solo la aplicación Python la que escribe en su cola de salida, entonces puede rastrear qué marcos se han procesado solo en la aplicación Python. Si tanto sus aplicaciones python como c ++ están escribiendo en la cola de salida, eso aumenta su nivel de dificultad y quizás refactorizar la arquitectura general de la aplicación sería una buena inversión.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *