Python - C -tillägg

Innehållsförteckning

Språket i programmering C Det har gjorts tillgängligt för mjukvaruutvecklare i många år, eftersom det är ett sammanställt språk kan vi göra program mycket mer optimalt och snabbare, tack vare detta är språket fortfarande i kraft eftersom det gör att olika typer av bearbetning kan utföras snabbt.

I Pytonorm Kraften att utvecklas på ett läsbart och vänligt sätt kommer med ett litet pris, vilket är att prestanda kan gå förlorad i vissa mycket specifika processer, så om denna förlust inte är acceptabel och sätter vårt program i fara måste vi leta efter alternativ. Dess flexibilitet gör att vi kan införliva moduler gjorda på andra språk som C.

Skriva tillägg i C
att skriva C -tillägg är inte lika transparent som att göra det i C # eller i JAVA att med de olika Python -implementeringarna gör vi det väldigt snabbt och enkelt, med C måste vi följa en API mycket strikt, men dessa svårigheter har lett till verktyg som försöker förbättra denna process, en av dem är SLURK.

SLURK är en förkortning för Enkel wrapper och gränssnittsgenerator är ett verktyg som gör att vi kan utveckla tillägg i C eller C ++ och sedan paketera dem för användning på högnivåspråk som t.ex. Pytonorm, Perl, Rubin och andra.

Vad gör SWIG?
Att använda SLURK Vi måste bara uppfylla några enkla steg, låt oss se vad vi behöver härnäst:

  • Vi måste skriva ett gränssnitt för vår C -kod, den här typen av filer liknar mycket rubriker; i vissa fall kan du använda rubrikfilen direkt.
  • Vi springer SLURK i gränssnittsfilen orsakar detta att mer kod genereras i C, det vill säga omslaget.
  • Vi sammanställer filen gränssnitt tillsammans med förpackaren som vi genererar ett delat bibliotek som vi kan använda med de språk som är kompatibla med SLURK.

Lite övning
Efter att ha behärskat lite teori, låt oss nu se ett exempel på detta som vi har förklarat, vi kommer att göra en modul som upptäcker om en sträng är palindrom, det vill säga att den läses på samma sätt i båda riktningarna, detta är inte att det representerar ett problem att PytonormMen när de är riktigt stora strängar kan prestandaproblemet märkas, låt oss först se koden i följande bild och sedan se hur implementera det med SWIG:

Här har vi implementeringen i C, för att veta om en sträng är palindrome, så bygger vi gränssnittet som är följande kod:

Eftersom vi har de fullständiga C-nivåskraven kommer vi för närvarande att se vad vi måste göra SLURK för att kunna använda detta:

Först måste vi köra följande kommando:

 $ swig -python palindrome.i
Var palindrome.i det är vårt gränssnitt. Detta genererar filerna Pytonorm nödvändigt, då måste vi sammanställa allt, för detta steg måste vi mycket väl känna till våra elementens vägar för att kunna göra rätt referenser:
 gcc -c palindrome.c gcc -I $ PYTHON_HOME -I $ PYTHON_HOME / Inkludera -c palindrome_wrap.c gcc -delat palindrome.o palindrome_wrap.o -o _palindrome.so 
Efter dessa steg kan vi använda vårt nya bibliotek i Pytonorm som följer:
 >>> importera _palindrome >>> dir (_palindrome) ['__doc__', '__file__', '__name__', 'is_palindrome'] >>> _palindrome.is_palindrome ('ipreferpi') 1 >>> _palindrome.is_palindrome ('notlob ') 0 
Med detta avslutar vi handledningen, som vi ser är det lite komplext implementera tillägg i C prestanda som uppnåtts är dock värt det.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave