{"id":41193,"date":"2020-02-06T14:42:08","date_gmt":"2020-02-06T11:42:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah"},"modified":"2020-02-06T14:42:08","modified_gmt":"2020-02-06T11:42:08","slug":"inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","title":{"rendered":"Inlinec \u2013 eine neue Methode zur Verwendung von C-Code in Python-Skripten","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/georgek42\/inlinec\">inlinec<\/a><\/noindex> Es wurde eine neue Methode zur Inline-Integration von C-Code in Python-Skripte vorgeschlagen. Funktionen in C werden direkt in einer Datei mit Python-Code definiert und durch den Dekorator @inlinec hervorgehoben. Das zusammengefasste Skript wird wie es ist vom Interpreter spython ausgef\u00fchrt und mit dem in Python bereitgestellten Mechanismus analysiert. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3\/library\/codecs.html\">der Codecs<\/a><\/noindex>, der es erm\u00f6glicht, einen Parser anzuschlie\u00dfen, um das Skript vor seiner Analyse durch den Interpreter umzuwandeln (in der Regel wird das Modul codecs f\u00fcr eine transparente Umkodierung des Textes verwendet, erlaubt jedoch auch beliebige Transformationen des Inhalts des Skripts). <\/p>\n<p>Der Parser wird als Modul eingebunden (from inlinec import inlinec), das die prim\u00e4re Verarbeitung durchf\u00fchrt und in Echtzeit die C-Funktionsdefinitionen, die durch die Annotationen @inlinec hervorgehoben wurden, in ctypes-Bindings \u00fcbersetzt und den C-Funktionsk\u00f6rper durch den Aufruf dieser Bindings ersetzt. Nach einer solchen Umwandlung erh\u00e4lt der Python-Interpreter bereits den korrekt umgewandelten Originaltext des Skripts, in dem die C-Funktionen \u00fcber  <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3\/library\/ctypes.html\">ctypes<\/a><\/noindex>aufgerufen werden. Eine \u00e4hnliche Methode wird auch im Projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pyxl4\/pyxl4\">Pyxl4<\/a><\/noindex>angewendet, das es erlaubt, HTML- und Python-Code in einer Datei zu mischen.<\/p>\n<p>   # coding: inlinec<br \/>\n   from inlinec import inlinec<\/p>\n<p>   @inlinec<br \/>\n   def test():<br \/>\n       #include&lt;stdio.h&gt;<br \/>\n       void test() {<br \/>\n           printf(\"Hello, world\");<br \/>\n       }<\/p>\n<p>Die Entwicklung wird derzeit als experimenteller Prototyp pr\u00e4sentiert, in dem solche M\u00e4ngel wie die fehlende Unterst\u00fctzung f\u00fcr das \u00dcbergeben von Zeigern an Funktionen (au\u00dfer Strings), die Notwendigkeit, \u201egcc -E\u201c f\u00fcr das Preprocessing des Codes auszuf\u00fchren, das Speichern von Zwischendateien *.so, *.o und *.c im aktuellen Verzeichnis, das Fehlen eines Cache f\u00fcr die umgewandelte Variante und das Ausf\u00fchren \u00fcberfl\u00fcssiger Analysephasen (hohe Verz\u00f6gerungen bei jedem Start) festgestellt werden.<br \/>\n\"gcc -E\" f\u00fcr das Preprocessing des Codes, Speicherung der Zwischen*.so, *.o und *.c-Dateien im aktuellen Verzeichnis, keine Caching des umgewandelten Versions und Ausf\u00fchrung \u00fcberfl\u00fcssiger Parsing-Stufen (gro\u00dfe Verz\u00f6gerungen bei jedem Start). <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Quelle: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52306\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python, \u0432\u044b\u0434\u0435\u043b\u044f\u044f\u0441\u044c \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u043c &#171;@inlinec&#187;. \u0421\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c \u0441python \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432 Python \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043a\u043e\u0434\u0435\u043a\u043e\u0432, \u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41193","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Inlinec \u2014 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0438-\u043a\u043e\u0434\u0430 \u0432 Python-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-06T11:42:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-06T11:42:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Inlinec \u2014 eine neue Methode zur Verwendung von C-Code in Python-Skripten | ProHoster","description":"\ud83e\udd47Inlinec \u2013 eine neue Methode zur Verwendung von C-Code in Python-Skripten | ProHoster","canonical_url":"https:\/\/prohoster.info\/de\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Inlinec \u2014 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0438-\u043a\u043e\u0434\u0430 \u0432 Python-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 | ProHoster","og:description":"\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.","og:url":"https:\/\/prohoster.info\/de\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-06T11:42:08+00:00","article:modified_time":"2020-02-06T11:42:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41193","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:23:10","updated":"2022-10-01 06:41:29","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/41193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=41193"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/41193\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=41193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=41193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=41193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}