Python Ctypes

Python Ctypes
“Python Ctypes -modulen vil bli gjennomgått i denne artikkelen. Når vi implementerer Python -kode, vil vi vanligvis føle kravet om å inkludere metoder som muligens ble opprettet i et annet domene. En av de hyppigste grunnene til dette er at Python er tregere enn andre programmeringsspråk som C eller C++. Ytelsen kan forbedres kraftig ved å utføre komplekse beregninger på et raskt og effektivt språk.”

I virkeligheten bruker noen Python -moduler, som Numpy så vel som OpenCV, C- eller C ++ -funksjoner. Python CTYPES -modulen gjør det mulig for brukerne å integrere moduler som dette og bruke metodene sine.

For å diskutere å håndtere lagringen i CTYPES, kan et par prosedyrer tjene som grunnlaget. At brukere ikke trenger å bruke mer tid på å administrere datalagringen, har vært et av de beste aspektene ved å bytte fra C -språk til Python -språk. Språket som skaffer seg lagringen må umiddelbart gi ut det mens du bruker CTYPES eller annen teknikk. Vi viser også hvordan du laster inn et C -bibliotek og kaller funksjonene.

Vi vil utføre en rekke koder på Ubuntu 20.04 I denne artikkelen. Før vi kommer inn i kommandoene, får vi først tilgang til terminalen.

Vi kjører kommandoen $ nano sum.c. Nøkkelordet “Nano” brukes til å åpne den nødvendige filen. Her må vi åpne summen.C -fil.

$ nano sum.c

Filen til nano sum.C vil bli åpnet med suksess ved å kjøre kommandoen ovenfor. Før noe annet, bygger vi opp vår_funksjon (). Vi har gitt denne funksjonen to parametere, som inkluderer "num_numbers" og en peker. Argumentet “num_numbers” representerer det totale antallet vi har, og pekerparameteren peker på tallet.

I neste trinn initialiserer vi variabelen “Jeg”. Vi erklærer en variabel "sum" og setter den til å være 0. Videre vil vi bruke "for" -sløyfen. Vi vil iterere over hver verdi fra i = 0 til verdien av loopvariabelen “i” er mindre enn num_numbers. I den siste delen av "for" -sløyfen, gjør vi inkriminering i verdien av "jeg" med 1. Innenfor "for" -sløyfen vil vi legge til tallene [i] til "sum" -variabelen. Til slutt har vi brukt returerklæringen. Dette returnerer sumverdien. Det foregående bildet viser filens kildekode.

Vi vil trykke på Ctrl+X for å avslutte summen.C -fil. Nå igjen, åpner vi terminalen. La oss begynne å bruke CTYPES for å integrere en enkel modul med bare en metode i Python -skriptet. Vi kan imidlertid ikke knytte en standard .C -fil. Kommandoen kan brukes til å lage en standardpakke, og det er det vi trenger å gjøre.

Så vi har kommet inn i kommandoen CC -FPIC -Shared -o Libsum.Så fra summen.c. Vi tildelte utvidelsen .C til filen. Ethvert navn vil bli brukt til å oppgi filnavnet, men hold utvidelsene i betraktning mens du bruker denne kommandoen.

I trinnet vil vi utføre kommandoen “Dir” for å åpne katalogen “Libsum.Så sum.C ”.

$ dir

Etter å ha åpnet katalogen, oppretter vi en ny fil som ble betegnet.py. Nano ville bli brukt for å åpne den filen.

$ nano test.py

Etter å ha åpnet testen.py -fil, vi starter kodingen. Ctypes må integreres i koden i starten. Så oppretter vi en variabel "sum", som kommer av ctypene.CDLL (“./libsum.så"). Vi må være forsiktige med dataene på riktig måte; Ctypes gjør det mulig for brukerne å importere et standardbibliotek og hente funksjoner eksplisitt fra det også. Dette krever at programmet blir kalt på samme vei som standardbiblioteket, og at de begge allerede er lokalisert her. Når vi innlemmer .PY -fil med standardbiblioteket har det vært flere spesifikasjoner for operativsystemer angående bibliotekets søkekataloger.

Videre kaller vi funksjonssummen.Our Function.Argrtpes. Vi setter verdien av denne funksjonen som CTYPES.c_int, ctypes.Peker (Ctypes.c_int). Så definerer vi vår_funksjon (). Vi har gitt tallene som argumenter. Vi lager en global variabel kalt _sum. Vi erklærer en variabel num_numbers. Innenfor denne variabelen må vi finne ut lengden på de definerte tallene, så vi bruker Len () -metoden. Vi lager en matrise. Denne matrisen lagres i en variabel “array_type”. Vi spesifiserer verdien som CTYPES.c_int * num_numbers til variabelen array_type.

Nå initialiserer vi en ny variabel, "Resultat". Her kaller vi funksjonssummen.Our_function (Stypes.c_int (num_numbers). Tilsvarende gir vi pekeren til nummeret (*nummen) til array_type -setningen. For å avslutte koden, skriver vi returerklæringen. Innenfor denne funksjonen passerer vi et variabelt “resultat” som parameter. Datatypen til resultatvariabelen er et heltall. Det foregående bildet viser filens kildekode.

Vi vil bruke dette til å kjøre programmet fra hvilken som helst fil. Etter at biblioteket er importert, vil dette bli lagret i en Python -attributt som inneholder prosedyrer for hver definert modul.

La oss gi nytt navn til testen.py -fil med summen.py -fil.

$ MV -test.py sum.py

Vi oppretter en ny fil, “Test.py ”, og så åpnes det ved å bruke nano -nøkkelordet før filnavnet.

$ nano test.py

Testen.PY -filen åpnes. Nå vil vi importere summen. I neste linje kaller vi print () -funksjonen. Innenfor denne funksjonen kaller vi metodesummen.Our_function (). Our_function () inneholder de første fem numeriske verdiene som argumenter. Det foregående bildet viser filens kildekode.

Her kjører vi filen “Test.py ”. Vi skriver kommandoen $ python3 -test.py. Denne kommandoen vil bli utført, og resultatet vil bli vist på terminalen.

$ python3 -test.py

Konklusjon

Hvordan bruke Pythons Ctypes har blitt dekket i denne artikkelen. Vi kjører kommandoene på Ubuntu 20.04. Vi har opprettet og åpnet en “sum.c ”-fil ved hjelp av nanoterminen. I denne filen har vi konstruert vår_funksjon (), og så har vi definert vår_funksjon. Neste, vi åpner testen.py -fil. Innenfor denne filen kan vi ringe vår_funksjon () og deretter bruke denne funksjonen.