Ho un modulo python dataProcessor.py
che inizializza una grande quantità di dati in memoria (circa 3 GB) Voglio usare questo modulo in diversi processi che sono in esecuzione simultaneamente.
Ma il problema è che non c'è abbastanza memoria sulla macchina per eseguire tutto allo stesso tempo a causa di dataProcessor.py
che carica i dati in memoria per ogni processo (3 GB per ogni processo, quindi per 3 processi un totale di 9 GB di memoria).
Ho provato a utilizzare il modello client-server per inizializzare i dati solo una volta e per servire tutti i processi, ma questo modello è troppo lento. Esiste un metodo per caricare i dati solo una volta e avere altri processi che accedono ai metodi nel modulo dataProcessor.py
Il modulo di cui sto parlando è Spacy che è scritto in Cython. I dati possono essere qualsiasi oggetto Python e non cambieranno una volta scritti. Va bene se la soluzione è un'estensione C per Python.
Esiste un'alternativa al modello server-client o di sottoprocesso che condivide la memoria.