<div dir="ltr">Basare una import sulle performance e' un errore,<div>dopo ti trovi a fare unitest e fare monkey patching ovunque. L'import va posto all'inizio a meno che non sei disperato. Di solito se e' grossa non importi le funzioni perche e' un casino poi, cioe senza import from.</div><div>Un saluto,</div><div>Giorgio</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mar 20 feb 2024 alle ore 13:30 Massimiliano della Rovere <<a href="mailto:massimiliano.dellarovere@gmail.com">massimiliano.dellarovere@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Premesso che senza indicazioni più precise sul "peso" (RAM? CPU? Tempo?) della libreria, dell'elaborazione, dei dati grezzi e di quelli che dovranno essere prodotti è difficile dare una risposta.</div><div><br></div><div>Se il tuo applicativo è basato su asyncio, potresti valutare di instanziare un concurrent.futures.ProcessPoolExecutor quando e dove serve, sfruttare più CPU per l'elaborazione e non sequestrare la CPU con delle coroutine che impiegano tanto tempo con elaborazione.</div><div><br></div><div>Se parliamo del solito webserver (django, flask, ecc) e ipotizzando che tu non abbia SSE o websocket che sostanzialmente ti rimandano al caso precedente, creerei comunque un processo esterno i dei worker dedicati alla libreria e dal tuo applicativo contatterei il pool per avviare l'elaborazione, scrivendo poi il risultato in un luogo che sia accessibile dal server web per renderlo scaricabile dall'utente o in modo che il completamento del task possa essere rilevato dal programma che esponga il risultato in un'area apposita all'utente/i interessati.</div><div><br></div><div>Se invece deve essere una soluzione tutta in uno, senza processi esterni, dovresti valutare i seguenti costo (costo può essere la RAM usata, la CPU usata, il tempo... valuta):</div><div>1. costo di import della libreria</div><div>2. costo di trasmissione (anche file su disco) dei dati alla libreria</div><div>3. costo di elaborazione dei dati</div><div>4. costo di trasmissione (anche file su disco) dei dati prodotti dalla libreria</div><div>5. costo di una richiesta gestita dal tuo programma quando non entra in gioco la libreria</div><div>6. la percentuale media di richieste che necessitano della libreria.</div><div><br></div><div>chiamiamo 1..4 la somma dei costi da 1 a 4.</div><div>Se 6 è basso e 1..4 è considerevolmente maggiore di 5... carica la libreria solo quando e dove serve.</div><div>Se 6 è basso e 1..4 è simile a 5 carica la libreria a monte.</div><div>Se 6 è medio alto, carica la libreria a monte,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mar 20 feb 2024 alle ore 13:21 <<a href="mailto:iz4apu@libero.it" target="_blank">iz4apu@libero.it</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div lang="IT"><div><p class="MsoNormal">Ciao.<u></u><u></u></p><p class="MsoNormal">Una questione di carattere generale.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Devo usare una libreria abbastanza grossa. Però, non tutto il mio programma la usa, ma solo una delle sue funzioni e queesta funzione potrebbe essere chiamata una sola volta, più volte o anche non chiamata affatto.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Secondo voi, l’import di questa libreria è comunque meglio metterlo ad inizio programma, o piuttosto all’interno della funzione interessata?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Grazie.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Gabry.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:10pt;font-family:"Courier New"">Gabriele Battaglia (Gabe / Gabry) - IZ4APU<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10pt;font-family:"Courier New"">--... ...--  -.. .  .. --.. ....- .- .--. ..-  - ..-  . .<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:10pt;font-family:"Courier New"">Sent from Outlook on Windows, Genus Bononiae's computer. </span><span style="font-size:10pt;font-family:"Courier New"">(Libero)</span><span><u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p></div></div>_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="https://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br>
</div></blockquote></div>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="https://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Life is a chess game - Anonymous.<br></div></div>