„Python - C“ plėtiniai

Turinys

Kalba programavimas C. Ji jau daugelį metų buvo prieinama programinės įrangos kūrėjams, kadangi tai yra kompiliuojama kalba, todėl programas galime padaryti daug optimalesnes ir greitesnes, todėl ši kalba vis dar galioja, nes ji leidžia greitai atlikti įvairių tipų apdorojimą.

In Python Galia vystytis skaitomu ir draugišku būdu yra maža kaina, ty kai kurie labai specifiniai procesai gali prarasti našumą, todėl jei šis praradimas yra nepriimtinas ir kelia pavojų mūsų programai, turime ieškoti alternatyvų. Jo lankstumas leidžia mums įtraukti modulius, pagamintus kitomis kalbomis, pvz., C.

Plėtinių rašymas C
Rašyti C plėtiniai nėra toks skaidrus, kaip tai padaryti C # arba viduje JAVA kad su skirtingais „Python“ diegimais tai padarome labai greitai ir lengvai, o su C privalome laikytis a API labai griežtas, tačiau dėl šių sunkumų atsirado įrankių, kurie bando pagerinti šį procesą, vienas iš jų yra SWIG.

SWIG yra akronimas Paprastas įvyniojimas ir sąsajos generatorius yra įrankis, leidžiantis sukurti plėtinius C arba C ++ ir tada supakuoti juos naudoti aukšto lygio kalbomis, pvz. Python, Perl, Rubinas ir kiti.

Ką daro SWIG?
Naudoti SWIG Mums tereikia atlikti kelis paprastus veiksmus, pažiūrėkime, ko mums reikia toliau:

  • Turime parašyti savo C kodo sąsają, tokio tipo failai yra labai panašūs į antraštes; kai kuriais atvejais antraštės failą galite naudoti tiesiogiai.
  • Mes bėgame SWIG sąsajos faile dėl to sugeneruojama daugiau kodo C, tai yra įvyniojime.
  • Mes sudarome failą sąsaja kartu su pakuotoju, su kuriuo sukuriame bendrą biblioteką, kurią galime naudoti su suderinamomis kalbomis SWIG.

Šiek tiek praktikos
Įvaldę šiek tiek teorijos, dabar pažiūrėkime, kaip tai paaiškinome, padarysime modulį, kuris nustato, ar eilutė yra palindromas, tai yra, kad ji skaitoma vienodai abiem kryptimis. tai nereiškia, kad tai yra problema PythonTačiau, kai jos yra tikrai didelės eilutės, galima pastebėti našumo problemą, pirmiausia pažiūrėkime kodą, esantį kitame paveikslėlyje, o tada pažiūrėkime, kaip įgyvendinkite jį naudodami SWIG:

Čia mes turime diegimą C, kad žinotume, ar eilutė yra palindromas, tada sukuriame sąsają, kuri yra šis kodas:

Kadangi turime visus C lygio reikalavimus, dabar pažiūrėsime, ką turime padaryti SWIG kad galėtum tai naudoti:

Pirmiausia turime paleisti šią komandą:

 $ swig -python palindrome.i
Kur palindromas.i tai mūsų sąsaja. Tai sugeneruos failus Python būtina, tada mes turime viską surinkti, kad atliktume šį žingsnį, mes turime gerai žinoti savo elementų kelius, kad galėtume pateikti teisingas nuorodas:
 gcc -c palindrome.c gcc -I $ PYTHON_HOME -I $ PYTHON_HOME / Įtraukti -c palindrome_wrap.c gcc -bendrinamas palindrome.o palindrome_wrap.o -o _palindrome.so 
Po šių veiksmų galime naudoti naują biblioteką Python taip:
 >>> importuoti _palindrome >>> dir (_palindrome) ['__doc__', '__file__', '__name__', 'is_palindrome'] >>> _palindrome.is_palindrome ('ipreferpi') 1 >>> _palindrome.is_palindrome ('notlob “) 0 
Tuo baigiame pamoką, nes matome, kad ji yra šiek tiek sudėtinga įdiegti plėtinius C tačiau pasiektas rezultatas to vertas.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave