Python Ctypes

Python Ctypes
“Il modulo Python Ctypes sarà rivisto in questo articolo. Durante l'implementazione del codice Python, di solito sentiremo il requisito di includere metodi che sono stati eventualmente creati in un altro dominio. Uno dei motivi più frequenti di ciò è che Python è più lento di altri linguaggi di programmazione come C o C++. Le prestazioni possono essere notevolmente migliorate eseguendo calcoli complessi in un linguaggio rapido ed efficiente."

In realtà, alcuni moduli Python, come Numpy e OpenCV, fanno uso di capacità C o C ++. Il modulo Python Ctypes rende possibile per gli utenti integrare moduli come questo e utilizzare i loro metodi.

Per discutere della gestione dello spazio di archiviazione in Ctypes, un paio di procedure possono fungere da fondamento. Il fatto che gli utenti non debbano dedicare più tempo a gestire l'archiviazione dei dati è stato uno dei migliori aspetti del passaggio dalla lingua C a Python Language. Il linguaggio che acquisisce immediatamente l'archiviazione deve rilasciarlo durante l'utilizzo di ctypes o qualsiasi altra tecnica. Mostreremo anche come caricare una libreria C e chiamare le sue funzioni.

Eseguiremo una varietà di codici su Ubuntu 20.04 In questo articolo. Prima di inserire i comandi, accediamo prima al terminale.

Eseguiremo il comando $ nano somma.C. La parola chiave "nano" viene utilizzata per aprire il file richiesto. Qui dobbiamo aprire la somma.file c.

$ nano somma.C

Il file di nano somma.C verrà aperto correttamente eseguendo il comando sopra. Prima di ogni altra cosa, costruiremo il nostro_function (). Abbiamo dato a questa funzione due parametri, che includono "num_numbers" e un puntatore. L'argomento "num_numbers" rappresenta i numeri totali che abbiamo e il parametro puntatore indica il numero.

Nel passaggio successivo, inizializziamo la variabile "io". Dichiariamo una "somma" variabile e la impostiamo in 0. Inoltre, utilizzeremo il ciclo "per". Itereremo su ogni valore da i = 0 fino a quando il valore della variabile loop "i" è inferiore a num_numbers. Nell'ultima parte del ciclo "per", facciamo incriminazione nel valore di "i" di 1. All'interno del ciclo "per", aggiungeremo i numeri [i] alla variabile "somma". Alla fine, abbiamo usato l'istruzione di ritorno. Questo restituisce il valore della somma. L'immagine precedente mostra il codice sorgente del file.

Toccheremo Ctrl+X per lasciare la somma.file c. Ora ancora una volta, apriamo il terminale. Iniziamo a utilizzare i ctypes per integrare un semplice modulo con un solo metodo nello script Python. Tuttavia, non possiamo associare uno standard .file c. Il comando può essere utilizzato per creare un pacchetto standard, che è ciò che dobbiamo fare.

Quindi, abbiamo inserito il comando cc -fpic -shared -o libsum.Quindi dalla somma.C. Abbiamo assegnato l'estensione .c al file. Qualsiasi nome verrà utilizzato per dare il nome del file ma tieni in considerazione le estensioni durante l'utilizzo di questo comando.

Nel passaggio, eseguiremo il comando "Dir" per aprire la directory "Libsum.Quindi somma.C".

$ dir

Dopo aver aperto la directory, creeremo un nuovo file chiamato test.Py. Nano verrebbe applicato per aprire quel file.

$ nano test.Py

Dopo aver aperto il test.Py File, iniziamo la codifica. I ctype devono essere integrati nel codice all'inizio. Quindi creiamo una "somma" variabile, che deriva dai ctypes.CDLL ("./libsum.COSÌ"). Dobbiamo stare attenti ai dati in modo appropriato; I CTYPES consentono agli utenti di importare una libreria standard e recuperare esplicitamente le funzioni. Ciò richiede che il programma venga chiamato all'interno dello stesso percorso della libreria standard e che si trovano già qui. Quando incorporiamo il .File PY con la libreria standard, ci sono state diverse specifiche del sistema operativo per quanto riguarda le directory di ricerca della libreria.

Inoltre, chiamiamo la somma della funzione.la nostra funzione.argrtpes. Impostiamo il valore di questa funzione come ctypes.c_int, ctypes.Puntatore (ctypes.c_int). Quindi definiamo il nostro_function (). Abbiamo fornito i numeri come argomenti. Creiamo una variabile globale definita _sum. Dichiariamo una variabile num_numbers. All'interno di questa variabile, dobbiamo scoprire la lunghezza dei numeri definiti, quindi useremo il metodo Len (). Creiamo un array. Questo array è archiviato in una variabile "Array_Type". Specifichiamo il valore come ctypes.C_INT * NUM_NUMBERS ALL'ARRAY_TYPE.

Ora inizializziamo una nuova variabile, "risultato". Qui chiamiamo la somma della funzione.our_function (stipi.c_int (num_numbers). Allo stesso modo, forniamo il puntatore del numero (*numb) all'istruzione Array_Type. Per terminare il codice, digitiamo l'istruzione di ritorno. All'interno di questa funzione, passiamo un "risultato" variabile come parametro. Il tipo di dati della variabile di risultato è un numero intero. L'immagine precedente mostra il codice sorgente del file.

Lo useremo per eseguire il programma da qualsiasi file. Dopo che la libreria è stata importata, questo verrà salvato in un attributo Python contenente procedure per ogni modulo definito.

Rinominiamo il test.file py con la somma.Py File.

Test $ MV.Py Sum.Py

Creeremo un nuovo file, "Test.py ”, e poi verrà aperto utilizzando la parola chiave nano prima del nome del file.

$ nano test.Py

Il test.verrà aperto il file py. Ora importeremo la somma. Nella riga successiva, chiamiamo la funzione di stampa (). All'interno di questa funzione chiamiamo la somma del metodo.our_function (). Il nostro_function () contiene i primi cinque valori numerici come argomenti. L'immagine precedente mostra il codice sorgente del file.

Qui eseguiremo il file "Test.Py ". Scriviamo il comando $ python3 test.Py. Questo comando verrà eseguito e il risultato verrà mostrato nel terminale.

Test $ Python3.Py

Conclusione

Come usare i ctypes di Python è stato trattato in questo articolo. Eseguiamo i comandi su Ubuntu 20.04. Abbiamo creato e aperto una "somma.File C "con l'aiuto del termine nano. In questo file, abbiamo costruito il nostro_function (), e quindi abbiamo definito il nostro_function. Successivamente, apriamo il test.Py File. All'interno di questo file, possiamo chiamare il nostro_function () e quindi utilizzare questa funzione.