Topic: Unione di due programmi.  (Letto 208 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline lupusimprobus

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Unione di due programmi.
« il: Dicembre 02, 2022, 17:52 »
Buongiorno a tutti.
Ho realizzato due programmi Python che funzionano egregiamente.
Il primo è un bot telegram (python-telegram-bot V20.0a6 con funzioni async/await) che si occupa di interfacciare l'utente ad un database Mariadb
Il secondo utilizza SNAP7 (python-snap7) per andare a leggere/scrivere dei dati da un PLC Siemens e interfacciarli con il medesimo database Mariadb.
Nello specifico i due programmi leggono/scrivono i dati dallo stesso database e mentre il primo li interfaccia con il bot telegram, il secondo si interfaccia con il PLC.
Domanda:
Sarebbe possibile creare un programma che richiami l'esecuzione di entrambi in parallelo?

Mi spiego meglio:
Ho provato a realizzare un file "main" in cui creavo due thread, uno per programma.
Questo funzionava quando per il bot telegram non utilizzavo async/await. Pare infatti che async/await e thread non si piacciano molto o almeno, io non sono riuscito a farli coesistere.
Per tutti i tentativi che ho fatto, funziona solo uno dei due programmi, quello richiamato per primo.
Qualunque suggerimento sarà gradito.
Grazie a tutti.

Offline nuzzopippo

  • python sapiens
  • *****
  • Post: 677
  • Punti reputazione: 0
    • Mostra profilo
Re:Unione di due programmi.
« Risposta #1 il: Dicembre 02, 2022, 18:30 »
...
Sarebbe possibile creare un programma che richiami l'esecuzione di entrambi in parallelo?...
Si, certo, hai numerose possibilità per farlo, possibilità che spaziano dall'eseguire separatamente gli script così come sono, con sub-process , magari come daemon, o utilizzare le possibilità di multiprocessing, od anche il threading, dipende un po' dalle Tue esigenze e credo esistano diverse librerie "specializzate" per varie esigenze, i pià esperti di me (o san Google) potranno senz'altro dartene indicazione

Comunque, la programmazione concorrente/parallela non è una passeggiata, riguardo ai thread "separati", personalmente, se debbo in qualche modo controllare o far comunicare dei thread separati, in un unico ambiente di sessione, non utilizzo la programmazione asincrona ma mi baso su pattern tipo Publisher/subcribe o utilizzando la libreria pypubsub od anche, più sbrigativamente creando un singleton dedicato a smistare messaggio ed un protocollo di comunicazione tra i thread ... ma, bada bene, io ho ancora molto da imparare, esistono certo approcci migliori dei miei.

Offline lupusimprobus

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:Unione di due programmi.
« Risposta #2 il: Dicembre 02, 2022, 19:30 »
Grazie mille.
Mi hai dato un bel po' di spunti.
Ora mi tocca solo mettermi a studiarli per bene.