2013-07-19 8 views
6

मूल रूप से मैं एक अजगर कार्यक्रम कॉल कार्यों सीअजगर-सी एकीकरण: ctypes, CFFI या एक बाइनरी मॉड्यूल बनाने

में लिखा

तो बनाना चाहते (मैं जानता हूँ कि जहाँ तक) मेरे विकल्प हैं:

  • ctypes/CFFI
    • एक DLL बनाएं/एसओ/dylib सी कार्यों से युक्त और ctypes या CFFI का उपयोग कर उन तक पहुंचें। जाहिर है CFFI पाइथन में सभी कार्यों के हस्ताक्षर घोषित करने की एकमात्र कमी के साथ तेज़ तरीका है।
    • सकारात्मक:
      • मेरी सी कार्यों में किसी भी अनुकूलन करने की आवश्यकता नहीं है। पाइथन में सभी प्रकार का अनुवाद किया जाता है।
    • विपक्ष:
      • प्रदर्शन?
  • अजगर बाइनरी मॉड्यूल
    • सी में एक अजगर इंटरफ़ेस लिखें, एक द्विआधारी अजगर मॉड्यूल
    • पेशेवरों में मेरी सी मॉड्यूल परिवर्तित:
      • प्रदर्शन?
    • विपक्ष:
      • सभी प्रकार के अनुवाद सी में किया [एसआईपी] [3] इस स्वचालित किया जा सकता है का उपयोग कर रहा है।

एक अजगर द्विआधारी मॉड्यूल में सी मॉड्यूल कन्वर्ट वास्तव में तेजी से होता है?

क्या दोनों समाधान सी कार्यों में पाइथन कॉलबैक भेजने का समर्थन करते हैं?

एसआईपी एक पायथन इंटरफेस उत्पन्न करने के लिए एक अच्छा विकल्प है? क्या कोई अन्य विकल्प भी हैं ?

क्या उनमें से कोई भी अन्य विशेषता है?

+1

कुछ अच्छी चीजें मिलीं: [मूल कोड के साथ पायथन का उपयोग करने के 5 तरीके] (http://kos.gd/2013/01/5-ways-to-use-python-with-native-code/), [ पायथन रैपर टूल्स: ए प्रदर्शन अध्ययन] (http://web.archive.org/web/20070703071726/http://people.web.psi.ch/geus/talks/europython2004_geus.pdf) – romulof

उत्तर

1

मैं सिर्फ विकल्पों में से एक पुरानी सूची मैं इस से संबंधित प्रकाशित की समीक्षा की गई थी: http://stromberg.dnsalias.org/~strombrg/speeding-python/

आप केवल CPython (2.x या 3.x) को लक्षित कर रहे हैं, तो मैं शायद Cython के लिए जाना चाहते हैं।

यदि आप भी पिपी पर चलने में सक्षम होना चाहते हैं, तो CFFI अच्छा हो सकता है; मैंने अभी तक कोशिश नहीं की है, लेकिन यह बहुत अच्छा लगता है।यह पूरी तरह से ctypes की तरह नहीं है - ctypes अधिक एबीआई स्तर है, जबकि सीएफएफआई अधिक एपीआई स्तर है - जो अच्छा है।

यदि आप भी ज्योथन पर दौड़ने में सक्षम होना चाहते हैं, तो सबप्रोसेस शायद आपकी सबसे अच्छी शर्त है।

+1

सी फ़ंक्शन पहले से ही हैं लिखा हुआ। स्थिर कोड के टन। मैं केवल पाइथन में उपयोग करने का एक तरीका ढूंढ रहा हूं। – romulof

+0

यह दिलचस्प है, हालांकि मेरे सुझाव शायद अभी भी लागू होते हैं। – dstromberg

+0

माना जाता है कि अजगर पाइथन <-> सी सीमा पर धीमा है। उन्होंने इसे पापी में कुछ सामान्य उपयोगों के लिए अनुकूलित किया है। – dstromberg