Passa al tema normale
Discussioni su argomenti di Informatica

Regole del forum

Consulta il nostro regolamento e la guida per scrivere le formule
Rispondi al messaggio

[Python] Multithreading o Multiprocessing

12/08/2019, 11:40

Qualcuno di voi ha mai usato la libreria OPENMP per rendere il codice python da sequenziale a parallelo?

Consigli? Sono alle prime armi...
Ho bisogno di velocizzare i calcoli. Impiega troppo tempo e ho pensato di rendere la parte di codice in cui riporto i dati (calcolati : richiamo delle funzioni esterne alla classe) paralleli per velocizzare.

Grazie

Re: [Python] Multithreading o Multiprocessing

12/08/2019, 14:23

OpenMP è che io sappia disponibile solo in C/C++ e Fortran. In Python puoi usare per esempio la libreria multiprocessing. Se fai uso di numpy, questo dovrebbe poi fare uso automaticamente di più thread per le operazioni.

Re: [Python] Multithreading o Multiprocessing

13/08/2019, 08:26

in Python si possono aggiungere script in C/C++ giusto?

Re: [Python] Multithreading o Multiprocessing

25/08/2019, 10:20

Con numpy sono riuscita a ridurre il tempo di 30min ma impiega ancora molto: poco meno di un'ora.. mi sembra cmq troppo. Cosa mi consigliate?

Vorrei provare a stampare le colonne della tabella contemporaneamente. Ora da una riga di 6 celle alla volta sono passata a una colonna alla volta e qualcosa risparmio ma è ancora tanto. Grazie!

Re: [Python] Multithreading o Multiprocessing

26/08/2019, 15:44

Se il tuo codice ci mette 1 ora, allora è probabile che tu debba considerare le seguenti opzioni:
  1. usare un approccio al problema più intelligente;
  2. compilare il tuo programma python (per esempio usando https://pypy.org/ );
  3. riscrivere il tuo programma in un linguaggio compilato come C o C++.

Suggerisco 1 e 2 per incominciare. Se è ancora lento puoi considerare la terza opzione (eventualmente usando OpenMP o altre librerie simili).

Nota però che è meglio non mescolare le operazioni di input e output con quelle di puro calcolo.

Re: [Python] Multithreading o Multiprocessing

26/08/2019, 16:43

Ti ringrazio. Io sto usando spyder su Anaconda. Proverò a compilarlo seguendo le tue indicazioni.
Non posso riscriverlo in C/C++ perché dev'essere fatto principalmente in python, nel caso integrato con codice diverso.
Io uso wxpython e non pyqt. Questo potrebbe creare rallentamenti?
In input carico un file che viene elaborato... ma ogni calcolo poi è una funzione a sè richiamata in fase di output su interfaccia. Solo la scrittura su tabella impiega tempo... il resto é tutto abbastanza rapido.

Re: [Python] Multithreading o Multiprocessing

27/08/2019, 13:26

Cosa fa la tua applicazione? Ho l'impressione che il tuo problema sia di architettura del codice e, forse, di algoritmi. Usare wxpython invece di pyqt non dovrebbe influenzare in maniera determinante le performance.

Re: [Python] Multithreading o Multiprocessing

29/08/2019, 22:53

Grazie Vic
Ho risolto con apatriarca.
Io chiamavo le funzioni direttamente in stampa su wx.python. Sono bastate delle variabili d'appoggio per rendere tutto più snello.
Rispondi al messaggio


Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000— Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.