खोज…


एक कस्टम सी लाइब्रेरी से कार्यों का उपयोग करना

हमारे पास एक सी लाइब्रेरी है जिसका नाम my_random जो एक कस्टम वितरण से यादृच्छिक संख्या पैदा करता है। यह दो कार्य प्रदान करता है जिनका हम उपयोग करना चाहते हैं: set_seed(long seed) और rand() और (और भी बहुत कुछ set_seed(long seed) हमें आवश्यकता नहीं है)। Cython में इनका उपयोग करने के लिए हमें इसकी आवश्यकता है

  1. एक इंटरफ़ेस को .pxd फ़ाइल में परिभाषित करें और
  2. .pyx फ़ाइल में फ़ंक्शन को कॉल करें।

कोड

test_extern.pxd

# extern blocks define interfaces for Cython to C code
cdef extern from "my_random.h":
    double rand()
    void c_set_seed "set_seed" (long seed) # rename C version of set_seed to c_set_seed to avoid naming conflict

test_extern.pyx

def set_seed (long seed):
    """Pass the seed on to the c version of set_seed in my_random."""
    c_set_seed(seed)

cpdef get_successes (int x, double threshold):
    """Create a list with x results of rand <= threshold
    
    Use the custom rand function from my_random.
    """
    cdef:
        list successes = []
        int i
    for i in range(x):
        if rand() <= threshold:
            successes.append(True)
        else:
            successes.append(False)
    return successes


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow