Devreden veriye part-2 Uygulama Geliştirme

Ziyaret Sayisi 5565

Öncelikle 1.yazımı okumadıysanız ,onu okumanız çok daha iyi olacaktır .(Çünkü bu bir yazı serisi) 1.yazıya ” https://blog.ictr.club/devreden-veriye-part-1/ ” bu linkten ulaşabilirsiniz.Okumak istemezseniz özet geçeyim ,Can Oğuz hocamla bağımsız şekilde beraber uygulama geliştiriyoruz,planlarını hazırladım ,şuan projeyi oluşturmaya başladık.

Bugün odaklandığımız şey ise yazdığımız fonksiyonların hızlı çalıştırmak bunun için 2 yöntem anlatacağım.

UYGULAMA

Uygulamayı geliştirmeden önce bizim dikkat etmemiz gereken  en önemli 3 kıstası yazalım.(Yoksa veri analizinden tut, web sayfasının responsive olmasıda önemli)

  1. Veri Akışı
  2. Hesap-Kitabın hızlı olması
  3. Geliştireceğimiz Yan Uygulamaların kendine özel kıstaslardaki kalitesi(Web sayfaları hızlı yüklenmeli veya verileri daha hızlı işlemek için daha doğru veri yapıları kullanmak gerek)

C/C++ İLE PYTHON BERABER KULLANMAK

Şimdi elimizdeki veri büyüdüğünde hesaplamalar zorlaşabilir veya imkanlarımız olduğunda ise  daha güçlü diller kullanacağız.Ayrıca her iki dilin avantajından neden vazgeçelim.Python’un kolaylığı , c/c++ gücünü beraber kullanabiliriz.Şimdi ise kullanıma geçelim.

1.YÖNTEM(GCC ile Shared library  KULLANIMI)

C++ ÖRNEĞİ

Örnek olarak bir c++ fonksiyonunu pythona shared library olarak paylaşıp python içerisinde kullanalım.

1.functions.cpp burayada fonksiyonları yazalım,2 sayıyı toplayan bir fonksiyon yazalım.

2.head.hpp dosyası oluşturun.Burada amaç ise kullandığım kütüphaneleri kullanmak,not:pythonda ctypes kullanacağımız için c++ fonksiyonunu c fonksiyonu olarak deklare edeceğiz.

Linux için aşağıdaki komutları yazalım.Not:windows kullananlar dll tercih tercih etmeliyiz

Ardından python app.py adında dosyamızı oluşturup bu fonksiyonu yazalım.

Son olarak  python dosyamızı çalıştıralım,”python app.py” yazalım ve sonucu görelim.

C ÖRNEĞİ

Şimdi ise c için 2 sayıyı çarpan bir uygulama yazalım,ilk olarak dosya ismi olarak cfunc.c adında bir dosya oluşturup aşağıdaki fonksiyonu yazalım.

Aynı şekilde komutları aynı şekilde yazalım,mylib.so adında başka bir kütüphane oluşturalım.

Bu örnek için başka bir python dosyası oluşturalım ve çalıştıralım.

Çıktımız ise aşağıdaki gibi olacaktır.

2.YÖNTEM(SETUPTOOLS KULLANMAK)

İlk olarak bu yapıdan bahsedelim,setuptools python geliştiricileri için oluşturulmuş paket oluşturma aracıdır.Hemen aşağıdaki komutu yazarak yüklememizi yapalım.

Şimdi ise kodlarımızı yazacağımız demo.c dosyasını oluşturup aşağıdaki  kodları yazalım.

Ardında setup.py dosyasımızı oluşturarak demo.c ‘yi extension olarak kaydedelim.

Build edelim.

Gönül rahatlılığı ile ile uygulamamızın içinde import edelim.Eğer yazdığımız kütüphaneyi default şekilde eklemek istersek install etmemiz gerekir.

Build ettiğimiz eklentiyi örnek uygulamamızı hazırladıktan sonra yazımızı bitirelim.

Bütün yazıyı toparlarsak  ,amacımız daha düşük seviyeli diller ile hesaplama yapıp (c/c++ gibi )  ,pythonda(projede python kullanıyoruz) .Bu hesabı kullanmak bazı işlemleri pythonda yapmamızın sebebi pythonun sanıldığının aksine çok hızlı hesap yapamıyor oluşudur.Pythona ait birçok kütüphane hali hazırda c++ için yazılım lapack  vb kütüphaneleri kullanmaktadır.

1.Yöntem : c /c++ ile hesaplamaları yaparak shared library  olarak paylaşıyoruz.(benim tercihim)

2.Yöntem: cpython kullanarak,<python.h> kullanarak  python object oluşturacak fonksiyonlar oluşturuyoruz.

Bu bağlantılardan  kaynak kodlara ulaşabilirsiniz.:https://github.com/SirmaXX/extension_python_examples

KAYNAKÇA

  1. https://physicspython.wordpress.com/2020/11/11/using-c-functions-in-python/
  2. https://github.com/ilkermanap/rnglfg
  3. https://www.geeksforgeeks.org/how-to-call-c-c-from-python/
  4. https://stackabuse.com/enhancing-python-with-custom-c-extensions/
  5. https://www.youtube.com/watch?v=Qgevy75co8c

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir