La programmazione multi-threading in Python è abbastanza semplice usando il modulo threading!

Oggi vediamo qualche esempio in Python 3; ma dovrebbe essere abbastanza simile anche per la versione 2.

Nel primo esempio, i threads non sono sincronizzati, ed infatti l'output sarà una cosa del genere:

Inizio Thread 1
Inizio Thread 2
Thread 1: Mon Apr 24 14:04:58 2017
Thread 2: Mon Apr 24 14:04:59 2017
Thread 1: Mon Apr 24 14:04:59 2017
Thread 1: Mon Apr 24 14:05:00 2017
Thread 2: Mon Apr 24 14:05:01 2017
Thread 1: Mon Apr 24 14:05:01 2017
Thread 1: Mon Apr 24 14:05:02 2017
Fine Thread 1
Thread 2: Mon Apr 24 14:05:03 2017
Thread 2: Mon Apr 24 14:05:05 2017
Thread 2: Mon Apr 24 14:05:07 2017
Fine Thread 2
Fine del main thread

Per effettuare l'hashing delle stringhe in Python, possiamo avvalerci di un modulo apposito: hashlib!

Il suo utilizzo è molto semplice, e ci mette anche a disposizione delle funzioni per capire cosa è supportato a sistema, e cosa è sicuramente supportato dal modulo.

La gestione dei file temporanei in Python è abbastanza banale (come ci si poteva aspettare...).

E' possibile eseguire le operazioni necessarie usando un modulo apposito: tempfile!

Questo modulo ha diverse funzioni per la creazione di file temp, e noi useremo NamedTemporaryFile.

Questa variante, rispetto a TemporaryFile, garantisce un nome visibile al file creato.

Python, in entrambe le versioni, arriva già con un modulo che ci permette di eseguire il parsing degli argomenti da console: argparse!

In verità questo modulo non è l'unico, ma è di sicuro il più avanzato.

Oggi ne vediamo un esempio pratico; lo sto usando per un mio programma in cui richiedo all'utente:

  • un path iniziale
  • un path finale
  • la dimensione della larghezza
  • la dimensione dell'altezza

La necessità è quella di connettere Python a un database Oracle, su piattaforma Linux.

Avendo già installato unixODBC, ho deciso di usare quella connessione.

Per sapere come installare e configurare unixODBC su Linux per un db Oracle potete vedere qua.

Do quindi per scontato questo passaggio.

Vediamo un piccolo snippet di codice in Python per identificare l'estensione di un file.

Sicuramente ci sono vari modi per farlo, ma usando il modulo os.path è molto semplice.

Possiamo usare la funzione splitext, che in pratica spezza in due il risultato:

  • il nome del file completo di path
  • l'estensione del file

Per ridimensionare le immagini con Python, tutti consigliano l'uso di PIL / Pillow.

Pillow, in realtà, è un fork di PIL, e funziona bene anche con Python 3.

Oggi vediamo qualche esempio di utilizzo.

Prima di tutto installiamo la libreria:

$ sudo pip install pillow

L'altra settimana un utente mi ha scritto che su Python non ho fatto molte guide basiche.

In effetti ha ragione; la verità è che Python non lo uso molto.

Però, visto che aveva qualche problema con gli array multidimensionali, oggi ne vediamo qualche esempio.

Per creare un array multidimensionale basta questo:

number_sets = [[2, 4, 6, 8, 10], [3, 6, 9, 12, 15], [4, 8, 12, 16, 20]]

Ero alla ricerca di un programma per formattare un file JSON sul mio pc, senza passare per strumenti online.

Il motivo è semplicemente che il file pesa 33 MB, e quindi sul web è troppo lento.

Cercando qua e la ho scoperto che dalla versione 2.6 Python include uno strumento a riga di comando che fa esattamente quello che cerco: json.tool.

Nei sistemi *NIX, ogni utente ha uno specifico UID (id univoco).

In genere lo UID di root è zero.

Usando il modulo os, con Python è molto semplice identificare se l'utente che ha lanciato il programma è root o meno.

E questo può essere utile in molti casi.