SORU
21 Aralık 2009, PAZARTESİ


Python C kütüphanesi sarma: C, Cython veya ctypes?

Python uygulamasından C kütüphanesi aramak istiyorum. Bütün API, benim davamla ilgili işlevleri ve veri türlerini sadece kaydırmak istemiyorum. Gördüğünüz gibi, üç seçenek var:

  1. C. gerçek bir uzantı Muhtemelen overkill oluşturmak, ve aynı zamanda öğrenme uzantısı yazma yükünü önlemek için istiyorum.
  2. Cython C kütüphanesinden ilgili kısımları Python için ortaya çıkarmak için kullanın.
  3. Python ile her şey, ctypes harici kütüphane ile iletişim kurmak için kullanıyor.

Olsun 2) emin değilim ya da 3) daha iyi bir seçimdir. 3 avantajı) ctypes standart kütüphanenin bir parçası olduğunu, ve elde edilen saf kod bu senin için bir avantaj aslında ne kadar emin olmasam da Python-olur.

Her iki seçenek ile daha fazla avantaj / dezavantajları vardır? Hangi yaklaşım önerir misiniz?


Düzenleme:Tüm cevaplar için teşekkürler, herkes benzer bir şey yapmak isteyen için iyi bir kaynak sağlar. Karar, tabii ki, hala bir tek dava için yapılacak ve; "Bu" bir tür cevap. doğru şey, bir şey yok - Kendi davam için, muhtemelen ctypes ile giderim, ama aynı zamanda ileri başka bir projede Cython denemek için sabırsızlanıyorum.

Orada tek bir doğru cevabı olmak, kabullenmek, biraz keyfi; fikir bazı iyi sağlar FogleBird cevabı ctypes içine seçtim ve şu anda da en yüksek oy cevaptır. Ancak, iyi bir bakış elde etmek için tüm cevapları okumanızı öneririm.

Tekrar teşekkürler.

CEVAP
21 Aralık 2009, PAZARTESİ


Cython kendisi, öğrenme değer, oldukça serin bir araçtır ve Python sözdizimi için şaşırtıcı bir şekilde bulunur. Eğer Numpy ile herhangi bir bilimsel hesaplama yaparsan, o zaman Cython hızlı matris işlemleri için Numpy ile entegre çünkü gitmek için bir yoldur.

Cython Python dili için birebir. Geçerli bir Python dosyasını atabilir ve geçerli bir C programı tükürdü. Bu durumda, sadece Cython Python temel CPython API çağrıları göster. Bu kod artık yorumlanır çünkü belki de P'lik bir hızlanma olur.

Bazı iyileştirmeler almak için, kodunuzu, tür bildirimleri gibi Cython ek gerçekleri anlatmaya başlar. Eğer yeterince söylersen, Python for döngüsünü C döngü için bir olur O kodu saf C. indirgenebilir Burada büyük bir hız artışı göreceksiniz. Ayrıca dış C programları için buraya bağlayabilirsiniz.

Cython kodu kullanmak da son derece kolaydır. Manuel zor ses yapar diye düşündüm. Kelimenin tam anlamıyla yap:

$ cython mymodule.pyx
$ gcc [some arguments here] mymodule.c -o mymodule.so

ve sonra da C aşağı derler Python kodunuzda import mymodule ve tamamen unutabilirsin

Cython çok kolay kur ve kullanmaya başla çünkü herhangi bir durumda, eğer sizin ihtiyaçlarınıza uygun olup olmadığını görmek için çalışıyorum tavsiye ederim. Eğer aradığınız araç olarak değil giderse ziyan olmayacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006