Maison >développement back-end >Tutoriel Python >Comment appeler la fonction C en Python

Comment appeler la fonction C en Python

藏色散人
藏色散人original
2019-01-22 14:56:563517parcourir

Avez-vous déjà rencontré une situation où vous deviez appeler une fonction C en utilisant python ? Cet article vous aidera à un niveau très basique, et si vous n'avez pas rencontré cette situation, vous serez heureux de savoir comment procéder.

Comment appeler la fonction C en Python

Tout d'abord, écrivons une fonction simple en C et générons une bibliothèque partagée de ce fichier. Supposons que le nom du fichier soit function.c.

int myFunction(int num) 
{ 
    if (num == 0) 
  
        //如果number为0,则不执行任何操作。 
        return 0; 
    else
        // 如果number是2的幂,则返回1,否则返回0
          
    num & (num - 1) == 0 ? return 1 : return 0 
}

Compilation :

cc -fPIC -shared -o libfun.so function.c

Appel d'une fonction C depuis Python à l'aide de la bibliothèque ctypes (interface de fonction externe)

L'instruction ci-dessus générera une bibliothèque partagée appelée libfun.so. Voyons maintenant comment l'utiliser en python. En python, nous avons une bibliothèque appelée ctypes. En utilisant cette bibliothèque, nous pouvons utiliser les fonctions C en python.

Supposons que le nom du fichier soit function.py.

import ctypes 
NUM = 16      
# libfun loaded to the python file 
# using fun.myFunction(), 
# C function can be accessed 
# but type of argument is the problem. 
                         
fun = ctype.CDLL(libfun.so)   
# Now whenever argument  
# will be passed to the function                                                         
# ctypes will check it. 
            
fun.myFunction.argtypes(ctypes.c_int) 
  
# now we can call this  
# function using instant (fun) 
# returnValue is the value  
# return by function written in C  
# code 
returnVale = fun.myFunction(NUM)

Cet article explique comment appeler des fonctions C en Python. J'espère qu'il sera utile aux amis dans le besoin !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Articles Liés

Voir plus