Python - C paplašinājumi

Satura rādītājs

Valoda programmēšana C. Tā ir bijusi pieejama programmatūras izstrādātājiem daudzus gadus, jo tā ir apkopota valoda, un mēs varam padarīt programmas daudz optimālākas un ātrākas, tāpēc šī valoda joprojām ir spēkā, jo tā ļauj ātri veikt dažāda veida apstrādi.

In Python Spēja attīstīties lasāmā un draudzīgā veidā ir saistīta ar nelielu cenu, proti, veiktspēju var zaudēt dažos ļoti specifiskos procesos, tādēļ, ja šie zaudējumi nav pieņemami un apdraud mūsu programmu, mums ir jāmeklē alternatīvas. Tā elastība ļauj mums iekļaut moduļus, kas izgatavoti citās valodās, piemēram, C.

Paplašinājumu rakstīšana C
rakstīt C paplašinājumi nav tik pārredzama kā to darīt C # vai iekšā JAVA ka ar dažādām Python ieviešanām mēs to padarām ļoti ātru un vienkāršu, ar C mums jāievēro a API ļoti stingri, tomēr šīs grūtības ir radījušas rīkus, kas mēģina uzlabot šo procesu, viens no tiem ir SWIG.

SWIG ir akronīms Vienkāršs iesaiņojums un saskarnes ģenerators ir rīks, kas ļauj mums izstrādāt paplašinājumus C vai C ++ un pēc tam iepakot tos lietošanai augsta līmeņa valodās, piemēram, Python, Perl, Rubīns un citi.

Ko dara SWIG?
Izmantot SWIG Mums vienkārši jāizpilda dažas vienkāršas darbības, redzēsim, kas mums ir vajadzīgs tālāk:

  • Mums ir jāraksta interfeiss mūsu C kodam, šāda veida faili ir ļoti līdzīgi galvenes; dažos gadījumos galvenes failu var izmantot tieši.
  • Mēs skrienam SWIG saskarnes failā tas izraisa vairāk koda ģenerēšanu C, tas ir, iesaiņojumā.
  • Mēs apkopojam failu interfeisu kopā ar iesaiņotāju, ar kuru mēs izveidojam koplietojamu bibliotēku, kuru varam izmantot ar valodām, kas ir saderīgas SWIG.

Neliela prakse
Apguvuši mazliet teorijas, tagad redzēsim piemēru, ko esam izskaidrojuši, mēs izveidosim moduli, kas nosaka, vai virkne ir palindroms, tas ir, ka tā tiek nolasīta vienādi abos virzienos. nav tā, ka tas rada problēmas PythonTomēr, ja tās ir patiešām lielas virknes, var pamanīt veiktspējas problēmu, vispirms aplūkosim kodu nākamajā attēlā un tad redzēsim, kā īstenojiet to, izmantojot SWIG:

Šeit mums ir ieviešana C, lai uzzinātu, vai virkne ir palindroms, tad mēs izveidojam saskarni, kas ir šāds kods:

Tā kā mums ir pilnīgas C līmeņa prasības, tagad mēs redzēsim, kas mums jādara SWIG lai varētu izmantot šo:

Vispirms mums jāizpilda šāda komanda:

 $ swig -python palindrome.i
Kur palindroms.i tas ir mūsu interfeiss. Tas ģenerēs failus Python nepieciešams, tad mums viss ir jāapkopo, lai šajā posmā mums būtu ļoti labi jāzina mūsu elementu ceļi, lai varētu izdarīt pareizās atsauces:
 gcc -c palindrome.c gcc -I $ PYTHON_HOME -I $ PYTHON_HOME / Iekļaut -c palindrome_wrap.c gcc -shared palindrome.o palindrome_wrap.o -o _palindrome.so 
Pēc šīm darbībām mēs varam izmantot mūsu jauno bibliotēku Python sekojoši:
 >>> importēt _palindrome >>> dir (_palindrome) ['__doc__', '__file__', '__name__', 'is_palindrome'] >>> _palindrome.is_palindrome ('ipreferpi') 1 >>> _palindrome.is_palindrome ('notlob ') 0 
Ar to mēs pabeidzam apmācību, jo mēs redzam, ka tā ir nedaudz sarežģīta ieviest paplašinājumus C tomēr sasniegtais ir tā vērts.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave