[Python] Domanda su import.
Giorgio Zoppi
giorgio.zoppi a gmail.com
Mer 21 Feb 2024 19:12:47 CET
Basare una import sulle performance e' un errore,
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.
Un saluto,
Giorgio
Il giorno mar 20 feb 2024 alle ore 13:30 Massimiliano della Rovere <
massimiliano.dellarovere a gmail.com> ha scritto:
> 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.
>
> 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.
>
> 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.
>
> 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):
> 1. costo di import della libreria
> 2. costo di trasmissione (anche file su disco) dei dati alla libreria
> 3. costo di elaborazione dei dati
> 4. costo di trasmissione (anche file su disco) dei dati prodotti dalla
> libreria
> 5. costo di una richiesta gestita dal tuo programma quando non entra in
> gioco la libreria
> 6. la percentuale media di richieste che necessitano della libreria.
>
> chiamiamo 1..4 la somma dei costi da 1 a 4.
> Se 6 è basso e 1..4 è considerevolmente maggiore di 5... carica la
> libreria solo quando e dove serve.
> Se 6 è basso e 1..4 è simile a 5 carica la libreria a monte.
> Se 6 è medio alto, carica la libreria a monte,
>
> Il giorno mar 20 feb 2024 alle ore 13:21 <iz4apu a libero.it> ha scritto:
>
>> Ciao.
>>
>> Una questione di carattere generale.
>>
>>
>>
>> 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.
>>
>>
>>
>> Secondo voi, l’import di questa libreria è comunque meglio metterlo ad
>> inizio programma, o piuttosto all’interno della funzione interessata?
>>
>>
>>
>> Grazie.
>>
>>
>>
>> Gabry.
>>
>>
>>
>> Gabriele Battaglia (Gabe / Gabry) - IZ4APU
>>
>> --... ...-- -.. . .. --.. ....- .- .--. ..- - ..- . .
>>
>> Sent from Outlook on Windows, Genus Bononiae's computer. (Libero)
>>
>>
>> _______________________________________________
>> Python mailing list
>> Python a lists.python.it
>> https://lists.python.it/mailman/listinfo/python
>>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python
>
--
Life is a chess game - Anonymous.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20240221/b614f1b9/attachment.html>
Maggiori informazioni sulla lista
Python