{"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\/nl\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","title":{"rendered":"Inlinec &#8212; een nieuwe manier om C-code te gebruiken in Python-scripts","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Project <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/georgek42\/inlinec\">inlinec<\/a><\/noindex> Een nieuwe manier is voorgesteld voor inline-integratie van C-code in Python-scripts. Functies in C worden gedefinieerd in hetzelfde bestand als de Python-code, gemarkeerd met de decorator @inlinec. Het samengevoegde script wordt uitgevoerd zoals het is door de sPython-interpreter en wordt geparsed met behulp van de in Python beschikbare mechanismen. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3\/library\/codecs.html\">tussen codecs<\/a><\/noindex>, waarmee een parser kan worden aangesloten om het script te transformeren voordat het wordt geparsed door de interpreter (doorgaans wordt de codecs-module gebruikt voor transparante hercodering van tekst, maar het stelt ook in staat om de inhoud van het script op andere manieren te transformeren). <\/p>\n<p>De parser wordt aangesloten als een module (from inlinec import inlinec), die de primaire verwerking uitvoert en ter plekke de definities van C-functies, gemarkeerd met de annotaties @inlinec, omzet in ctypes-wrapper en vervangt het lichaam van de C-functie door een aanroep van deze wrappers. Na deze conversie ontvangt de Python-interpreter al de correct omgezette broncode van het script, waarin de C-functies worden aangeroepen met behulp van  <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3\/library\/ctypes.html\">ctypes<\/a><\/noindex>. Een vergelijkbare methode wordt ook toegepast in het project <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pyxl4\/pyxl4\">Pyxl4<\/a><\/noindex>, dat het mogelijk maakt om HTML en Python-code in \u00e9\u00e9n bestand te mengen.<\/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>De ontwikkeling wordt voorlopig gepresenteerd als een experimenteel prototype, waarin tekortkomingen worden opgemerkt, zoals het ontbreken van ondersteuning voor het doorgeven van pointers aan de functie (behalve voor strings), de noodzaak om<br \/>\n\"gcc -E\" voor het preprocessen van de code, het opslaan van tussenliggende *.so, *.o en *.c-bestanden in de huidige map, geen caching van de omgezette versie en het uitvoeren van overbodige parsing-stappen (grote vertragingen bij elke uitvoering). <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Bron: <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.3 - 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\/nl\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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 een nieuwe manier om C-code in Python-scripts te gebruiken | ProHoster","description":"Het project inlinec heeft een nieuwe manier voorgesteld voor inline-integratie van C-code in Python-scripts.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/41193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=41193"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/41193\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=41193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=41193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=41193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}