Sto lavorando su un'interfaccia database a un MongoDB utilizzando Python Eve come API.
Il database memorizza diversi documenti contenenti parametri e valori necessari per alcuni calcoli. Ho scritto un modulo Python contenente tutte le routine di calcolo che devono avere accesso ai dati desiderati.
Poiché i calcoli richiedono un po 'di tempo per completare, preferisco il multiprocessing invece del multithreading per utilizzare diversi core per le simulazioni di co-corrente (facendo calcoli in parallelo, un calcolo per core, ma con parametri di input diversi, senza dividere un calcolo a diversi core).
Per avviare quei calcoli paralleli come processi propri (sotto) ho pensato di usare qualcosa come un thread genitore che è osservato da un altro thread chiamato 'osservatore di thread'. Poiché ciascuno di questi processi di calcolo necessita dell'accesso al database, ho pensato di utilizzare la eve-API in combinazione con requests
modulo.
Tutto sommato questi pensieri portano alla configurazione come la seguente:
Sulla base di questo concetto non sono sicuro su come controllare il sottoprocesso dal thread principale. Come posso assicurarmi che Process 1
sia terminato se Thread 1
termina?
Nota: la soluzione desiderata deve funzionare sia su macchine basate su UNIX che su Windows. Quindi usare il% co_de restituito del processo avviato per ucciderlo usando pid
non funzionerebbe dato che questo non sarebbe fattibile su una macchina Windows.