J'ai entendu dire que CTTPES peut provoquer des accidents (ou arrêter des erreurs) dans Python et Windows. Devrais-je rester à l'écart de leur utilisation? Où ai-je entendu? Il était de retour quand j'ai essayé de contrôler divers aspects de Windows, d'automatisation, ce genre de chose. P>
J'entends de la sconie, mais je vois des CTTYPES plus souvent que non. Tout danger ici? Si oui, que dois-je faire attention? P>
J'ai effectué la recherche de Ctype Pro Con Python. P>
4 Réponses :
CTTYPES est un module sûr à utiliser, si vous l'utilisez correctement.
Certaines bibliothèques fournissent un accès de niveau inférieur aux choses, certains modules vous permettent simplement de vous tirer dessus dans le pied. Donc, naturellement, certains modules sont plus dangereux que d'autres. Cela ne signifie pas que vous ne devez pas les utiliser si! P>
Vous avez probablement entendu quelqu'un qui se réfère à quelque chose comme ceci: p> L'interprète Python Crashing est différent que simplement le code Python lui-même errore avec une erreur d'exécution. Par exemple, la récursion infinie avec un ensemble de limites de récursions par défaut provoquerait une erreur d'exécution mais l'interpréteur de Python serait toujours en vie après. p> Un autre bon exemple de ceci est avec le module SYS. Vous ne cessez pas d'utiliser le module SYS, car cela peut planter l'interprète Python. p> import sys
sys.setrecursionlimit(2**30)
def f(x):
f(x+1)
#This will cause no more resources left and then crash the python interpreter
f(1)
Depuis que je brise normalement les choses un peu, c'est une bonne vue d'ensemble sur CTTYPES que je ne connaissais pas.
Si quelque chose, Mais si votre bibliothèque C est déjà stable et testée, il n'y a absolument aucune raison de ne pas utiliser CTTYPES code> peut en effet causer des accidents, si la bibliothèque C utilise peut déjà em> cause de crash. p>
CTYPES CODE> peut aider à réduire les accidents, car vous pouvez appliquer la sécurité du type d'exécution avec Le ArgTypes CODE> Propriété sur les fonctions C utilisant CTYPES CODE>. P>.
CTYPES CODE> s'il effectue ce dont vous avez besoin en termes d'amenage de C et Python ensemble. P>
Bien sûr, ce que je pourrais l'utiliser pour ce n'est pas mon code C. Cela pourrait me donner une raison d'apprendre plus que ce que je sais.
En termes de robustesse, je pense toujours que Swig est un peu supérieur aux CTTYPES, car il est possible d'avoir un compilateur C vérifier des choses plus en profondeur pour vous; Cependant, cela est plutôt discutable d'ici (tant que cela se tienne plus grand dans les Versons de CTTypes antérieurs), grâce à la fonctionnalité Pour un beau milieu de passage entre les performances d'exécution de Swig (& C) et la commodité de CTYPES, avec le bonus supplémentaire de pouvoir ajouter plus de code pouvant utiliser un sous-ensemble de la syntaxe Python et de fonctionner à peu près au code C Les vitesses, considèrent également Cyron - une langue semblable à un python qui compile jusqu'à C et est spécialisée pour écrire des extensions appelées python-appelables et emballage des bibliothèques C (y compris celles qui peuvent être disponibles uniquement en tant que bibliothèques statiques, pas de DLL: CTTYPES ne vous laisseraient pas jouer avec ces em>; -). P> ArgTypes Code> @mark déjà mentionné. Cependant, il ne fait aucun doute que les frais généraux d'exécution sont beaucoup plus importants pour CTTPES que pour les approches de SwiG (et SIP et de Python et d'autres «emballages»): Donc, je pense que les CTTYPES comme moyen commode d'atteindre quelques fonctions à l'intérieur. Une DLL lorsque les appels se produisent en dehors d'un goulot d'étranglement clé, et non comme un moyen de rendre les grandes bibliothèques C disponibles pour Python dans des situations critiques de performance. P>
Je suggère fortement que vous regardez dans la lecture de ce livre: p>
GREY HAT Python: Programmation Python pour pirates et ingénieurs inversés p>
Le livre fonctionne comme un tutoriel approfondiant pour la bibliothèque CTTYPES et vous indique comment exécuter un code incroyablement bas de niveau p>
S'il vous plaît expliquer pourquoi. Pas que je doute de toi (et je possède ce livre), mais il serait utile de connaître vos raisons.
Moi aussi. Je ne suis pas tellement de pirater ou de ne rien annoncer ici. Je voulais accéder aux parties de ma machine, pas facilement vu par Python.
Si vous apprenez les mêmes types de choses que les pirates et les ingénieurs inverse doivent savoir à leurs fins, vous apprendrez également comment ces techniques peuvent être appliquées à «les parties d'accès de votre machine pas facilement vu par Python»
Le livre fonctionne comme un tutoriel approfondi pour la bibliothèque CTTYPES et vous indique comment exécuter un code incroyablement bas de niveau.
Tant de bonnes réponses, je dois réfléchir à cela et éventuellement commenter plus de choses sur chaque réponse. Pas étonnant que j'adore ce site.