[Python] Domanda su import.
Massimiliano della Rovere
massimiliano.dellarovere a gmail.com
Mar 20 Feb 2024 14:29:03 CET
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
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20240220/11f5d280/attachment.html>
Maggiori informazioni sulla lista
Python