Python Ctypes

Python Ctypes
„Moduł Python Ctypes zostanie sprawdzony w tym artykule. Podczas wdrażania kodu Pythona zwykle będziemy czuć wymóg uwzględnienia metod, które prawdopodobnie zostały utworzone w innej domenie. Jednym z najczęstszych powodów tego jest to, że Python jest wolniejszy niż inne języki programowania, takie jak C lub C++. Wydajność można znacznie zwiększyć, przeprowadzając złożone obliczenia w szybkim i wydajnym języku."

W rzeczywistości niektóre moduły Pythona, takie jak Numpy i OpenCV, wykorzystują możliwości C lub C ++. Moduł Python Ctypes sprawia, że ​​użytkownicy jest możliwe do integracji takich modułów i stosowanie ich metod.

Aby omówić zarządzanie magazynami w CTYPES, kilka procedur może służyć jako jego fundament. Fakt, że użytkownicy nie muszą spędzać więcej czasu na zarządzaniu pamięcią danych, był jednym z najlepszych aspektów przejścia z języka C na język Python. Język, który nabywa pamięć, musi go natychmiast wydać podczas używania Ctypes lub dowolnej innej techniki. Pokażemy również, jak załadować bibliotekę C i wywołać jej funkcje.

Wykonamy różne kody na Ubuntu 20.04 W tym artykule. Przed wprowadzeniem poleceń najpierw uzyskujemy dostęp do terminala.

Uruchomię polecenie $ nano sum.C. Słowo kluczowe „Nano” jest używane do otwarcia wymaganego pliku. Tutaj musimy otworzyć sumę.plik C.

$ nano sum.C

Plik nano sum.C zostanie pomyślnie otwarte, uruchamiając powyższe polecenie. Przed cokolwiek innego zbudujemy Our_Function (). Podaliśmy tę funkcję dwa parametry, które obejmują „num_numbers” i wskaźnik. Argument „num_numbers” reprezentuje całkowitą liczbę, które mamy, a parametr wskaźnika wskazuje na liczbę.

W następnym kroku zainicjujemy zmienną „I”. Deklarujemy zmienną „sumę” i ustawiamy ją na 0. Ponadto wykorzystamy pętlę „for”. Będziemy iterować każdą wartość od i = 0, aż wartość zmiennej pętli „i” jest mniejsza niż num_numbers. W ostatniej części pętli „for” dokonujemy obciążania wartości „i” przez 1. W pętli „dla” dodamy liczby [i] do zmiennej „suma”. Ostatecznie korzystamy z instrukcji powrotu. Zwraca to wartość sumy. Poprzedni obraz pokazuje kod źródłowy pliku.

Stukniemy Ctrl+X, aby opuścić sumę.plik C. Teraz jeszcze raz otwieramy terminal. Zacznijmy wykorzystywać Ctypes do zintegrowania prostego modułu z tylko jedną metodą z skryptem Python. Nie możemy jednak powiązać standardu .plik C. Polecenie może być użyte do utworzenia standardowego pakietu, co musimy zrobić.

Więc weszliśmy do polecenia cc -fpic -shared -o libsum.Więc z sumy.C. Przypisaliśmy rozszerzenie .c do pliku. Każda nazwa zostanie użyta do podania nazwy pliku, ale zachowaj rozszerzenia pod uwagę przy jednoczesnym korzystaniu z tego polecenia.

W kroku wykonamy polecenie „Dir”, aby otworzyć katalog „Libsum.Więc suma.C".

$ reli

Po otwarciu katalogu utworzymy nowy test nazywany plikiem.py. Nano zostanie zastosowane w celu otwarcia tego pliku.

Test $ nano.py

Po otwarciu testu.plik py, zaczynamy kodowanie. Ctypy należy na początku zintegrować z kodem. Następnie tworzymy zmienną „sumę”, która pochodzi z Ctypes.CDLL („./libsum.Więc"). Musimy odpowiednio uważać na dane; Ctypes umożliwia użytkownikom import standardowej biblioteki i jawne odzyskiwanie funkcji również z tego. Wymaga to, aby program był wywoływany na tej samej ścieżce co standardowa biblioteka i że oba już tu znajdują się. Kiedy włączamy .Plik PY w standardowej bibliotece, istniało kilka specyfikacji systemu operacyjnego dotyczące katalogów wyszukiwania biblioteki.

Ponadto wywołujemy sumę funkcji.nasza funkcja.argrtpes. Ustawiamy wartość tej funkcji jako Ctypes.C_INT, CTYPES.Wskaźnik (Ctypes.c_int). Następnie definiujemy Our_Function (). Podaliśmy liczby jako jego argumenty. Tworzymy zmienną globalną nazywaną _sum. Deklarujemy zmienną num_numbers. W ramach tej zmiennej musimy znaleźć długość zdefiniowanych liczb, więc będziemy używać metody len (). Tworzymy tablicę. Ta tablica jest przechowywana w zmiennej „array_type”. Określamy wartość jako Ctypes.c_int * num_numbers do zmiennej tablicy_typ.

Teraz inicjujemy nową zmienną „wynik”. Tutaj nazywamy sumę funkcji.Our_function (Stypes.c_int (num_numbers). Podobnie podajemy wskaźnik liczby (*odcięt) do instrukcji Array_Type. Aby zakończyć kod, wpisujemy instrukcję zwrotu. W ramach tej funkcji przekazujemy zmienną „wynik” jako jej parametr. Typ danych zmiennej wyniku jest liczbą całkowitą. Poprzedni obraz pokazuje kod źródłowy pliku.

Użyjemy tego do uruchomienia programu z dowolnego pliku. Po zaimportowaniu biblioteki zostanie to zapisane w atrybucie Python zawierającym procedury dla każdego zdefiniowanego modułu.

Zmieńmy nazwę testu.plik py z sumą.plik py.

test $ mv.py sum.py

Utworzymy nowy plik „Testuj.py ”, a następnie zostanie otwarty za pomocą słowa kluczowego nano przed nazwą pliku.

Test $ nano.py

Test.plik PY zostanie otwarty. Teraz zaimportujemy sumę. W następnym wierszu wywołujemy funkcję print (). W ramach tej funkcji wywołujemy sumę metody.Our_function (). Our_function () zawiera pierwsze pięć wartości numerycznych jako jego argumenty. Poprzedni obraz pokazuje kod źródłowy pliku.

Tutaj uruchomimy plik „Test.py ”. Piszemy polecenie $ python3.py. To polecenie zostanie wykonane, a wynik zostanie wyświetlony na terminalu.

$ Python3 Test.py

Wniosek

Jak używać Ctypes Pythona, zostało omówione w tym artykule. Uruchamiamy polecenia na Ubuntu 20.04. Stworzyliśmy i otworzyliśmy „sumę.plik C ”za pomocą nano terminu. W tym pliku skonstruowaliśmy Our_Function (), a następnie definiowaliśmy naszą funkcję. Następnie otwieramy test.plik py. W tym pliku możemy wywołać nasze_function (), a następnie skorzystać z tej funkcji.