{"id":463794,"date":"2025-06-19T03:01:24","date_gmt":"2025-06-19T03:01:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=463794"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=463794","title":{"rendered":"<span>\u041a\u0430\u043a \u043f\u0440\u0438\u0432\u0438\u043d\u0442\u0438\u0442\u044c Python \u043a Go<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435,<\/p>\n<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041f\u0435\u0432\u0437\u043d\u0435\u0440, \u0438 \u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e \u043d\u0430 \u0421\u0438 \u0438 Go. Go \u043e\u0431\u044b\u0447\u043d\u043e \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0431\u0430\u043a\u0435\u043d\u0434\u043e\u043c, \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0438 \u0432\u043e\u0442 \u044d\u0442\u0438\u043c \u0432\u043e\u0442 \u0432\u0441\u0435\u043c. \u041d\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u044f \u043f\u0438\u0448\u0443 \u043d\u0430 \u043d\u0451\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u041f\u041e.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 Go? \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043c\u0435\u043d\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439, \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u044f\u0441\u043d\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439, \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u0438 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439.<\/p>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, <a href=\"https:\/\/github.com\/OpenPrinting\/ipp-usb\" rel=\"noopener noreferrer nofollow\">ipp-usb<\/a>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 Go, \u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u0441\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b Linux \u0438 *BSD \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u043e\u0432 \u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a USB \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 IPP over USB \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b &#8212; \u0442.\u0435., \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0410 \u0435\u0449\u0435 \u044f \u0447\u043b\u0435\u043d OpenPrinting &#8212; \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0434\u043e\u0442\u0432\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u0430 \u0437\u0430 \u043f\u0435\u0447\u0430\u0442\u044c \u0438, \u043e\u0442\u0447\u0430\u0441\u0442\u0438, \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 UNIX-like OS \u0438 \u0437\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044f, \u043a\u0430\u043a \u0445\u043e\u0431\u0431\u0438, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e &#8212; \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0435\u0439 \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0412 \u0441\u0438\u043b\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043f\u0440\u043e\u0447\u0438\u0439 high load (\u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u043e\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u043e\u0440\u043c\u043e\u0437\u043d\u044b\u0435. \u041d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0442\u0435\u0440 \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443). \u041d\u043e \u0437\u0430\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0448\u0442\u0443\u043a \u0438 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043c\u043d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <strong>Go<\/strong> \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433. \u041d\u0443 \u0442.\u0435., \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u043e\u0433\u043b\u0430 \u0432\u0441\u043e\u0441\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0435\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0420\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u044f \u043e \u0442\u043e\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0432 \u0432\u044b\u0431\u0438\u0440\u0430\u043b \u043c\u0435\u0436\u0434\u0443 <strong>JS<\/strong>, <strong>Lua<\/strong> \u0438 <strong>Python<\/strong>.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, <strong>JS<\/strong> \u0438 <strong>Lua<\/strong> &#8212; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0438\u0448\u0435\u0432\u044b\u0435 \u044f\u0437\u044b\u043a\u0438. <strong>JS<\/strong> \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443 \u0432\u0441\u0435\u0445 \u0441 \u0432\u0435\u0431\u043e\u043c \u0430 <strong>Lua<\/strong> &#8212; \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0433\u0440. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0431\u043e\u0440 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0430\u043b \u043d\u0430 <strong>Python<\/strong>. \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0437\u043d\u0430\u044e\u0442 \u0432\u0441\u0435, \u0430 \u044f \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u0435\u0436\u0434\u0443, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044f. \u0425\u043e\u0442\u044f \u0441\u0430\u043c \u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, <strong>Python<\/strong> \u043d\u0435 \u0437\u043d\u0430\u044e \u0438 \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \ud83d\ude42<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 <strong>Python<\/strong>-\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 <strong>Go<\/strong>.<\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439.<\/h2>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 Python-\u0430, \u0438 <a href=\"https:\/\/github.com\/python\/cpython\" rel=\"noopener noreferrer nofollow\">cpython<\/a> &#8212; \u0441\u0430\u043c\u0430\u044f &#171;\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f&#187; \u0438\u0437 \u043d\u0438\u0445. \u041a\u043e\u0433\u0434\u0430 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u041f\u0438\u0442\u043e\u043d\u0435, \u0438\u043c\u0435\u044e\u0442 \u0432\u0432\u0438\u0434\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0435.<\/p>\n<p>\u0421\u0430\u043c cpython \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 python, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430\u0434 \u043d\u0435\u0439.<\/p>\n<p>API <strong>libpython3<\/strong> \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0438 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u041f\u0438\u0442\u043e\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0451\u043c.<\/p>\n<h2>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043b\u0438\u0432\u044b\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430 \u041f\u0438\u0442\u043e\u043d\u0430 \u043a Go, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445:<\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f libpython3, \u0438 \u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441 \u043c\u043e\u0438\u043c \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u043e\u043c, \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u041f\u0438\u0442\u043e\u043d\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 (\u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435) \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u041f\u0438\u0442\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u041f\u0438\u0442\u043e\u043d\u0430, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0445 \u0432 Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c Go-\u043d\u044b\u043c \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430. \u041d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u0441\u044b\u043b\u043e\u043a.<\/p>\n<\/li>\n<\/ul>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434?<\/h2>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430 \u043d\u0435\u043e\u0431\u044a\u044f\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 GitHub-\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/qur\/gopy\/tree\/python3.13\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u044d\u0442\u043e<\/a> &#8212; \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0435\u0441\u044c API, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u044b\u0439 libpython3 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c Python \u0432 Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0442\u0430\u043a \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Go \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f \u041f\u0438\u0442\u043e\u043d\u0430.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0437\u0434\u0435\u0441\u044c \u044f \u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0442\u0435 \u0438\u0437 \u043d\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0439\u0442\u0438, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435.<\/p>\n<h3>\u041b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u043d\u0430 libpython3.XX.so, \u0430 \u043d\u0435 libpython3.so<\/h3>\n<p><strong>libpython3<\/strong> \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435: \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <strong>libpython3.XX.so<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438 <strong>libpython3.so<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f (<strong>ELF NEEDED<\/strong>) \u043d\u0430 <strong>libpython3.XX.so<\/strong>.<\/p>\n<p>\u0412\u0441\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043b\u0438\u043d\u043a\u0443\u044e\u0442\u0441\u044f \u043d\u0430 <strong>libpython3.XX.so<\/strong>. \u041f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u041f\u0438\u0442\u043e\u043d\u0430, \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441 <strong>libpython3.XX.so<\/strong> \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043c\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f (<strong>XX<\/strong> &#8212; \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438).<\/p>\n<p>\u041c\u043d\u0435 \u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 <strong>libpython3.so<\/strong>.<\/p>\n<p>\u0423 \u041f\u0438\u0442\u043e\u043d\u0430, \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0447\u0438\u043c, \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.python.org\/3\/c-api\/stable.html\" rel=\"noopener noreferrer nofollow\">Stable C API<\/a>, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439, \u043f\u0440\u0430\u0432\u0434\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0421\u0438, \u0447\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u041f\u0438\u0442\u043e\u043d\u0430. \u042d\u0442\u043e\u0442 API \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e API, \u043d\u043e \u0436\u0438\u0442\u044c, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e.<\/p>\n<h3>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/h3>\n<p>\u041f\u0438\u0442\u043e\u043d (libpython3) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 (\u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430) \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/docs.python.org\/3\/c-api\/init.html#sub-interpreter-support\" rel=\"noopener noreferrer nofollow\">Sub-interpreter support<\/a>.<\/p>\n<p>\u0423 \u044d\u0442\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b &#8212; \u043e\u043d\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u0418\u043b\u0438 Global Interpreter Lock &#8212; \u043e\u043d \u0443 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435 \u043e\u0431\u0449\u0438\u0439 (\u0432\u0435\u0440\u043d\u0435\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c sub-interpreter \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c GIL, \u043d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 Stable API, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c).<\/p>\n<p>\u041f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438 cpython \u043a Go \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u044e\u0442.<\/p>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430.<\/h3>\n<p>\u041f\u0438\u0442\u043e\u043d &#8212; \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 Go &#8212; \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e API libpython3 \u0441\u0438\u0448\u043d\u044b\u0439, \u0438 \u0442\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0436\u0438\u0437\u043d\u0438 \u043f\u0438\u0442\u043e\u043d\u044c\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0445 \u0432 \u0441\u0438\u0448\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438 cpython \u043a Go \u044d\u0442\u043e \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442.<\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u0441\u0432\u0438\u043d\u0442\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>\u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0441\u0435 \u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u0443\u0449\u0438\u0435 \u0441\u0431\u043e\u0440\u043a\u0435 \u043c\u0443\u0441\u043e\u0440\u0430 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c Go-\u043d\u043e\u043c\u0443 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u043c\u0438 \u0432 Go \u043f\u0438\u0442\u043e\u043d\u044c\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438.<\/p>\n<p>\u0421 \u0443\u0447\u0451\u0442\u043e\u043c \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0434\u0438\u043d\u0433. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Go \u0432\u0435\u0441\u044c API libpython3, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043c\u043e\u044f \u0446\u0435\u043b\u044c &#8212; \u044d\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433, \u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043b \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u043d\u0435\u043f\u043e\u0434\u044a\u0435\u043c\u043d\u044b\u043c.<\/p>\n<p>\u0423\u0442\u0435\u0448\u0430\u044f\u0441\u044c \u044d\u0442\u043e\u0439 \u043c\u044b\u0441\u043b\u044c\u044e, \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b.<\/p>\n<h2>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/h2>\n<p>\u042f \u0432\u0441\u0451 \u0436\u0435 \u043f\u0438\u0448\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u043d\u0435 \u043a\u043d\u0438\u0433\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043c\u043e\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0443\u043c\u0435\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 Go \u0438 \u043d\u0430 \u0421\u0438 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 CGo.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445.<\/p>\n<h3>\u041b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u043d\u0430 libpython3.so<\/h3>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u043d\u0430 <strong>libpython3.XX.so<\/strong>, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043a \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u041f\u0438\u0442\u043e\u043d\u0430 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u043d\u043a\u0435\u0440\u0443 <strong>libpython3.so<\/strong> \u0432\u043c\u0435\u0441\u0442\u043e <strong>libpython3.XX.so<\/strong>, \u043b\u0438\u043d\u043a\u0435\u0440 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0438\u043c\u0432\u043e\u043b-\u0442\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u043d \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430:<\/p>\n<pre><code>\/usr\/bin\/ld: \/tmp\/go-link-783747701\/000003.o: undefined reference to symbol 'Py_InitializeEx' \/usr\/bin\/ld: \/usr\/lib64\/libpython3.13.so.1.0: error adding symbols: DSO missing from command line <\/code><\/pre>\n<p>\u0425\u043e\u0442\u044f \u0443 \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u0438 \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0435\u043c\u0443 \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <code>#cgo<\/code> \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c. \u0410 \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0432 <code>Makefile<\/code>, \u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0434\u043b\u044f Go \u0441\u0431\u043e\u0440\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 <code>go build<\/code> \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0442\u0435\u0439\u043b\u0438\u0432\u044b\u043c, \u0447\u0435\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0445\u043e\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <strong>libpython3.XX.so<\/strong> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u043d\u0430 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043d\u0435\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <strong>dlsym<\/strong>. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u044f, \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0438 \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0421\u0438:<\/p>\n<pre><code>        static __typeof__(Py_InitializeEx)    *Py_InitializeEx_p;          Py_InitializeEx_p = dlsym(RTLD_DEFAULT, \"Py_InitializeEx\");         if (Py_InitializeEx_p == NULL) {                 fatal_error(\"%s: %s\", \"Py_InitializeEx\", dlerror());         } <\/code><\/pre>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u0451\u0440\u0433\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0443\u0442\u043e\u0440\u043d\u043e, \u043d\u043e \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0438\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043d\u044b\u0445, \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u043d\u043e\u0433\u043e, \u043e\u043a\u043e\u043b\u043e \u0441\u043e\u0442\u043d\u0438.<\/p>\n<h3>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043d\u0438\u043c<\/h3>\n<p>\u0421\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libpython3 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043d\u0435\u0441\u043b\u043e\u0436\u0435\u043d \u0438 \u0434\u0430\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0443\u0431-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0418 \u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u043e\u0442 \u043d\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043e\u0442 \u0441\u043b\u043e\u0432\u0430 &#171;\u0441\u043e\u0432\u0441\u0435\u043c&#187;.<\/p>\n<p>\u0423 \u041f\u0438\u0442\u043e\u043d\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>\u041f\u0438\u0442\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 thread-local storage \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043d\u0438\u0442\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043d\u0451\u043c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a, \u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432.<\/p>\n<p>\u0412 libpython3 API \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u043d\u0438\u0442\u044c\u044e, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>PyThreadState<\/strong>, \u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 <strong>PyInterpreterState<\/strong>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0430\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, <strong>Py_NewInterpreter<\/strong> \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043d\u0438\u0442\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>PyThreadState<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0434\u0438\u043d, \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442: \u041f\u0438\u0442\u043e\u043d \u043e\u0442\u043b\u043e\u0436\u0438\u0442 \u0441\u0432\u043e\u044e \u043b\u0438\u0447\u0438\u043d\u043a\u0443 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0438\u0442\u0438, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430. \u0425\u0443\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u043d\u043e\u0433\u043e: \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0438 \u043d\u0438\u0433\u0434\u0435 \u0442\u043e\u043b\u043a\u043e\u043c \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u0443 \u0438 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0438\u0442\u043e\u043d\u044c\u0438\u043c\u0438 \u0437\u0430\u043f\u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0430 Go \u044d\u0442\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418 \u0432\u043e\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0438\u0442\u044c, \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u043e\u044e \u0432 \u0433\u043e\u0440\u043e\u0443\u0442\u0438\u043d\u043a\u0443 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <strong>runtime.LockOSThread<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u043e\u043b\u0431\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043d\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439).<\/p>\n<p>\u0421 \u044d\u0442\u043e\u0439 \u0433\u043e\u0440\u043e\u0443\u0442\u0438\u043d\u043a\u043e\u0439 \u044f \u043e\u0431\u0449\u0430\u044e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043d\u0430\u043b\u044b: \u043f\u043e\u0441\u044b\u043b\u0430\u044e \u0435\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043a\u0430\u043d\u0430\u043b\u0430, \u043a\u0443\u0434\u0430 \u043e\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u041f\u0438\u0442\u043e\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d &#171;\u0433\u043b\u0430\u0432\u043d\u044b\u0439&#187; \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0430 \u0441\u0443\u0431-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f, \u043a\u0430\u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a \u043d\u0435\u043c\u0443. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u043d\u0438\u0442\u044c &#8212; \u043b\u0438\u0447\u043d\u0430\u044f \u043d\u0438\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043f\u0438\u0442\u043e\u043d\u044c\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f).<\/p>\n<p>\u0421\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0443\u0431-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c libpython3:<\/p>\n<pre><code>    Py_InitializeEx_p(0);     py_main_thread = PyEval_SaveThread_p();  <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c <strong>Py_InitializeEx<\/strong> (\u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, <strong>Py_InitializeEx_p<\/strong>). \u041d\u0443\u043b\u0435\u0432\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u041f\u0438\u0442\u043e\u043d \u0431\u0440\u0430\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u043d\u0430 \u0441\u0435\u0431\u044f, \u0438\u043c\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f Go.<\/p>\n<p>\u041f\u043e\u0431\u043e\u0447\u043d\u044b\u043c (\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c) \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0430 <strong>Py_InitializeEx<\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0438\u0442\u043e\u043d\u044c\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043d\u0438\u0442\u0438. \u041d\u0430\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0435\u0449\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u043c <strong>PyEval_SaveThread<\/strong> (\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0451 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043a\u043d\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043e\u0442\u0446\u0435\u043f\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043d\u0438\u0442\u044c \u043e\u0442 \u041f\u0438\u0442\u043e\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u043c\u043e\u0433\u043b\u0430 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0432\u043e\u0434\u043e\u043c-\u0432\u044b\u0432\u043e\u0434\u043e\u043c, \u043d\u0435 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c Global Interpreter Lock. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043a \u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044f &#8212; <strong>PyEval_RestoreThread<\/strong>. \u0425\u043e\u0442\u044f \u0433\u043b\u044f\u0434\u044f \u043d\u0430 \u0432\u0441\u044e \u044d\u0442\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443 \u043d\u0435 \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0430 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u043c\u0435\u043d\u0430 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 :)).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0441\u0443\u0431-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code>PyInterpreterState *py_new_interp (void) {     PyThreadState      *tstate, *prev;     PyInterpreterState *interp;      \/\/ This stuff is very tricky.     \/\/     \/\/ We first call PyEval_RestoreThread(py_main_thread), to obtain     \/\/ the global interpreter lock.     \/\/     \/\/ Then Py_NewInterpreter() creates a new PyThreadState for     \/\/ us and attaches it to the newly created sub-interpreter.     \/\/     \/\/ We don't need this thread state and don't want to leak     \/\/ its memory.     \/\/     \/\/ So we use PyThreadState_Swap back to the py_main_thread     \/\/ and destroy the newly created PyThreadState.     \/\/     \/\/ Finally we need to PyEval_SaveThread() to release the     \/\/ the global interpreter lock.     PyEval_RestoreThread_p(py_main_thread);      tstate = Py_NewInterpreter_p();     interp = PyThreadState_GetInterpreter_p(tstate);     PyThreadState_Clear_p(tstate);      PyThreadState_Swap_p(py_main_thread);      PyThreadState_Delete_p(tstate);      py_main_thread = PyEval_SaveThread_p();      return interp; }    <\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0436\u043e\u043d\u0433\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c. \u041f\u043e\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0442\u043e\u043a\u0430, \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0442 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.. \u041d\u0430\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <strong>PyThreadState_Swap<\/strong> \u043c\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0432\u0435\u0449\u0438 \u0432 \u0437\u0430\u0434, \u0430 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0442\u043e\u043a\u0430 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u043c, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u043a \u0438\u0434\u0451\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443. \u0415\u0441\u043b\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0438\u0442\u043a\u0443, \u0442\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043d\u0438\u043c \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u043d\u0438\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u043e\u0439 \u0433\u043e\u0440\u043e\u0443\u0442\u0438\u043d\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0430 \u043f\u043e\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u041f\u0438\u0442\u043e\u043d\u043e\u043c.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043d\u0438\u0442\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043e\u0437\u0434\u0430\u0442\u044c <strong>PyThreadState<\/strong>, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u043a \u0442\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0439\u0434\u0451\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>\/\/ py_enter temporary attaches the calling thread to the \/\/ Python interpreter. \/\/ \/\/ It must be called before any operations with the interpreter \/\/ are performed and must be paired with the py_leave. \/\/ \/\/ The value it returns must be passed to the corresponding \/\/ py_leave call. PyThreadState *py_enter (PyInterpreterState *interp) {     PyThreadState *prev, *t = PyThreadState_New_p(interp);     prev = PyThreadState_Swap_p(t);     return prev; } <\/code><\/pre>\n<p>\u0418 \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0434\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0451 \u0432\u0437\u0430\u0434 \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 <strong>PyThreadState<\/strong>:<\/p>\n<pre><code>\/\/ py_leave detaches the calling thread from the Python interpreter. \/\/ \/\/ Its parameter must be the value, previously returned by the \/\/ corresponding py_enter call. void py_leave (PyThreadState *prev) {     PyThreadState *t = PyThreadState_Get_p();     PyThreadState_Clear_p(t);     PyThreadState_Swap_p(prev);     PyThreadState_Delete_p(t); } <\/code><\/pre>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c <strong>py_enter<\/strong>, \u0430 \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 &#8212; <strong>py_leave<\/strong>, \u0442\u043e \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u0438 \u0437\u0430\u0431\u044b\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0433\u043e\u0448\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u044f \u044d\u0444\u043e\u0440\u043c\u0438\u043b \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code>\/\/ Python represents a Python interpreter. \/\/ There are may be many interpreters within a single process. \/\/ Each has its own namespace and isolated from others. type Python struct {         interp  pyInterp \/\/ Underlying *C.PyInterpreterState }  \/\/ pyGate represents the locked (attached to the current thread \/\/ and with the GIL acquired) state of the Python interpreter. \/\/ \/\/ It works as a call gate into the interpreter and implements \/\/ all interpreter operations that require locking. type pyGate struct {         prev *C.PyThreadState \/\/ Previous current thread state }  \/\/ pyGateAcquire temporary attaches the calling thread to the \/\/ Python interpreter. \/\/ \/\/ It returns the pyGate object, that must be released after \/\/ use with the [pyGate.release] call. func pyGateAcquire(interp pyInterp) pyGate {         runtime.LockOSThread()         prev := C.py_enter(interp)         return pyGate{prev} }  \/\/ release detaches the calling thread from the Python interpreter. func (gate pyGate) release() {         gate.lastError() \/\/ Reset pending error condition, if any         C.py_leave(gate.prev)         runtime.UnlockOSThread() } <\/code><\/pre>\n<p>\u0410 \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u044b, \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434\u044b <strong>pyGate<\/strong>. \u0422\u0435\u043f\u0435\u0440\u044c \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443, \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code>\/\/ Object represents a Python value. \/\/ \/\/ Objects lifetime is managed by the Go garbage collector. \/\/ There is no need to explicitly release the Objects. type Object struct {         py  *Python \/\/ Interpreter that owns the Object         oid objid   \/\/ Object ID of the underlying *C.PyObject }  \/\/ IsCallable reports if Object is callable. func (obj *Object) IsCallable() bool {         gate := obj.py.gate()         defer gate.release()          pyobj := obj.py.lookupObjID(gate, obj.oid)         return gate.callable(pyobj) } <\/code><\/pre>\n<p>\u0417\u0430\u0447\u0435\u043c \u0432 Object-\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0435 \u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 PyObject, \u0430 \u0435\u0451 ID, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>\u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 pyGate \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e: \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0434\u0430\u043b \u043d\u0430\u043c \u0437\u0430\u0431\u044b\u0442\u044c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443 \u043d\u0430\u0434\u043e \u043f\u043e\u0437\u0432\u0430\u0442\u044c <strong>py_enter<\/strong>, \u0430 \u043f\u043e\u0441\u043b\u0435 &#8212; <strong>py_leave<\/strong>.<\/p>\n<p>\u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0443\u0442 \u0442\u043e\u0436\u0435 \u043d\u0430 \u0421\u0438:<\/p>\n<pre><code>\/\/ py_interp_close closes the Python interpreter. void py_interp_close (PyInterpreterState *interp) {     PyThreadState *prev = py_enter(interp);     PyInterpreterState_Clear_p(interp);     py_leave(prev);     PyInterpreterState_Delete_p(interp); } <\/code><\/pre>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u0435\u043d <strong>py_enter\/py_leave<\/strong>, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0438 \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u044b\u0437\u0432\u043e\u043c <strong>PyInterpreterState_Clear<\/strong>, \u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u044f\u043c\u0430\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <strong>PyInterpreterState_Delete<\/strong> \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 <strong>py_leave<\/strong>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430<\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 &#8212; \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0441\u044f \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430. \u0410 \u043d\u0435 \u043c\u044b \u0441\u0430\u043c\u0438, \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>\u041f\u0440\u0438\u0434\u0435\u043b\u0430\u0442\u044c \u043a Object-\u0443 \u0444\u0438\u043d\u0430\u043b\u0430\u0439\u0437\u0435\u0440 (<strong>runtime.SetFinalizer<\/strong>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u043b \u0431\u044b PyObject, \u0434\u0435\u043b\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u043d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d \u044f\u0432\u043d\u043e, \u0438 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0433\u0434\u0430 \u0434\u043e \u043d\u0438\u0445 \u0434\u043e\u0439\u0434\u0443\u0442 \u0440\u0443\u043a\u0438 \u0443 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u0443\u0447\u0451\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430 \u0434\u043e \u043d\u0438\u0445 \u043d\u0435 \u0434\u043e\u0439\u0434\u0451\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430, \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0445 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u0438 \u043e\u043d\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u043c\u0443\u0441\u043e\u0440\u043e\u043c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0443\u0442 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0439\u0442\u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412 Object-\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043d\u044c \u043d\u0430 PyObject, \u0430 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 (\u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430) \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u043c\u0443 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438. \u041e\u043d \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043e\u0442 64-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430, \u0438 \u044f \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0441\u044c \u0441 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0440\u0443\u0447\u0443 \u043f\u043e \u043a\u0440\u0443\u0433\u0443. \u041f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e 64 \u0431\u0438\u0442 &#8212; \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e, \u044d\u0442\u043e 18446744073709551615, \u0438 \u0435\u0441\u043b\u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0443, \u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u043d\u0430 584942 \u043b\u0435\u0442 (\u0430 \u0435\u0441\u043b\u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u0443 &#8212; \u0442\u043e \u043d\u0430 585 \u043a\u0435\u0442). \u0410 \u043a \u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044f \u0432\u044b\u0439\u0434\u0443 \u043d\u0430 \u043f\u0435\u043d\u0441\u0438\u044e, \u0438 \u0441 \u043c\u0435\u043d\u044f \u0432\u0437\u044f\u0442\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0433\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>\u0412 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435 (\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 <strong>Python<\/strong>, \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0439 <strong>PyInterpreterState<\/strong> \u0441 \u0433\u043e\u0448\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b) \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f <strong>map[uibt64]*C.PyObject<\/strong>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0438\u0442 \u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u044d\u0442\u0438\u0445 OID-\u043e\u0432 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u044c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0432\u0441\u0435 \u043f\u0438\u0442\u043e\u043d\u044c\u0438 (\u043d\u043e \u043d\u0435 \u0433\u043e\u0448\u043d\u044b\u0435!) \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043c\u0430\u043f\u0435 \u0443\u043d\u0438\u0447\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f\u043c, \u0430 \u0441\u0430\u043c\u0430 \u043c\u0430\u043f\u0430 \u043e\u043f\u0443\u0441\u0442\u043e\u0448\u0430\u0435\u0442\u0441\u044f. \u0418 \u0435\u0441\u043b\u0438 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u043f\u043e\u0437\u0436\u0435 \u0444\u0438\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043e\u043d \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 PyObject \u0438\u0437 \u043c\u0430\u043f\u044b, \u0443 \u043d\u0435\u0433\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0438 \u043e\u043d \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u0441\u044f.<\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0431\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0446\u0435\u043d\u0443: \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0438\u0442\u043e\u043d\u044c\u0435\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0438\u0437 \u0433\u043e\u0448\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043c\u0430\u043f\u0443. \u041d\u043e \u043d\u0430 \u0444\u043e\u043d\u0435 \u043e\u0431\u0449\u0438\u0445 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u041f\u0438\u0442\u043e\u043d\u043e\u043c, \u043d\u0435 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u043d\u0435\u0441\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u0435 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0434\u0430 \u0438 \u0446\u0435\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u043a\u043e\u0440\u0434\u044b \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f).<\/p>\n<h3>\u041e\u0431\u043c\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u041f\u0438\u0442\u043e\u043d\u043e\u043c \u0438 Go<\/h3>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0438\u043f\u043e\u0432 \u041f\u0438\u0442\u043e\u043d\u0430 \u0438 Go \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u0430\u044f. \u041f\u0440\u0438\u0447\u0435\u043c \u0443 \u041f\u0438\u0442\u043e\u043d\u0430 \u043e\u043d\u0430 \u043a\u0443\u0434\u0430, \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u0430\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043c, \u0433\u0434\u0435 Go \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u0438\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0430\u0439\u0441\u043e\u0432, \u0432 \u041f\u0438\u0442\u043e\u043d\u0435 \u0435\u0441\u0442\u044c \u0438 \u0441\u043f\u0438\u0441\u043a\u0438 (list) \u0438 \u0442\u0443\u043f\u043b\u0438 (tuple) \u0438 \u0441\u043b\u0430\u0439\u0441\u044b \u0435\u0441\u0442\u044c \u0442\u043e\u0436\u0435. \u041f\u0438\u0442\u043e\u043d\u044c\u0438 \u0446\u0435\u043b\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 (int) \u043e\u0431\u044b\u0447\u043d\u043e \u043b\u043e\u0436\u0430\u0442\u0441\u044f \u043d\u0430 \u0441\u0438\u0448\u043d\u044b\u0439 <strong>int\/long<\/strong>, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438 \u0441 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0437\u043d\u0430\u043a\u043e\u0432, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0433\u043e\u0448\u043d\u043e\u043c\u0443 <strong>big.Int<\/strong>. \u0411\u0430\u0439\u0442\u043e\u0432\u044b\u0435 \u0441\u043b\u0430\u0439\u0441\u044b \u0432 Go &#8212; \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e <strong>[]byte<\/strong>, \u0430 \u0432 \u041f\u0438\u0442\u043e\u043d\u0435 \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e \u0434\u0432\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u043f\u0430: bytes (read-only) \u0438 bytearray (writable).<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0440\u0430\u0437\u043d\u0430\u044f \u0443 \u043d\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0438\u043f\u043e\u0432, \u0438 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u0442 Go \u043a \u041f\u0438\u0442\u043e\u043d\u0443 \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u044f\u043c \u0432 \u0432\u0438\u0434\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430:<\/p>\n<pre><code>\/\/ NewObject creates a new Python Object for the Go value. \/\/ \/\/ The following Go types are supported: \/\/ \/\/      Go                              Python \/\/      ==                              ====== \/\/ \/\/      nil                             None \/\/ \/\/      bool and derivatives            PyBool_Type \/\/   \/\/      int, int8, int16, int32,        PyLong_Type \/\/      int64, uint, uint8, uint16, \/\/      uint32, uint64 and derivatives \/\/ \/\/      string and derivatives          PyUnicode_Type \/\/ \/\/      [*big.Int]                      PyLong_Type \/\/ \/\/      *Object                         new reference to the same PyObject \/\/   \/\/      []byte, [...]byte               PyBytes_Type \/\/   \/\/      []any, [...]any                 PyList_Type \/\/ \/\/      [cmp.Ordered or bool]any        PyDict_Type func (py *Python) NewObject(val any) (*Object, error)  <\/code><\/pre>\n<p>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u043c\u0435\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0441\u043b\u0430\u0439\u0441 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0432 list, \u0430 \u0432 tuple. \u041d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0412\u044b\u0437\u043e\u0432 \u041f\u0438\u0442\u043e\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 Go \u0442\u043e\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u0430\u043a\u043e\u043d\u043e\u0447\u043d\u043e:<\/p>\n<pre><code>\/\/ Call calls Object as function. \/\/ \/\/ Arguments are automatically converted from Go to Python. \/\/ See [Python.NewObject] for details. \/\/ \/\/ Use [Object.CallKW] for call with keyword arguments. func (obj *Object) Call(args ...any) (*Object, error) <\/code><\/pre>\n<p>\u0422.\u0435., \u0435\u0441\u043b\u0438 obj &#8212; \u044d\u0442\u043e callable Object, \u0442\u043e \u043f\u043e\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>res, err := obj.Call(1, 2, 3) <\/code><\/pre>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0441 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0442\u043e\u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d:<\/p>\n<pre><code>\/\/ CallKW calls Object as function with keyword arguments defined \/\/ by the kw parameter and positional arguments defined by the \/\/ args parameter (variadic). \/\/       \/\/ Arguments are automatically converted from Go to Python. \/\/ See [Python.NewObject] for details. \/\/       \/\/ If keyword arguments are not used, kw may be nil. \/\/ \/\/ It returns the function's return value. func (obj *Object) CallKW(kw map[string]any, args ...any) (*Object, error) <\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u043e\u0442 \u041f\u0438\u0442\u043e\u043d\u0430 \u043a Go, \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0438 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0436 \u0437\u0430\u0442\u0435\u0439\u043b\u0438\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0438\u043f\u043e\u0432 \u0443 \u041f\u0438\u0442\u043e\u043d\u0430. \u0412\u043e \u0447\u0442\u043e \u044f \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>[1, 2, 3, 4, 5]<\/code>, \u0432 \u0441\u043b\u0430\u0439\u0441 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u043b\u0438 \u0432 \u0441\u043b\u0430\u0439\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432? \u0414\u043e\u043b\u0436\u0435\u043d \u043b\u0438 \u044f \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u0432 map-\u044b? \u0410 \u0435\u0441\u043b\u0438 \u0441\u043b\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439? \u0410 \u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439? \u0410 \u0435\u0441\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 Object-\u043e\u043c map \u043f\u043e\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u043a\u0430\u043a map \u043d\u0430 \u0433\u043e\u0448\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0434\u043e\u043b\u0436\u043d\u043e \u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043f\u0438\u0442\u043e\u043d\u044c\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430?<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u043e\u0442 \u041f\u0438\u0442\u043e\u043d\u0430 \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c Object, \u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u044b-\u0430\u043a\u0441\u0435\u0441\u0441\u043e\u0440\u044b:<\/p>\n<pre><code>\/\/ Bool returns Object value as bool or an error. func (obj *Object) Bool() (bool, error)  \/\/ Int returns Object value as int64 number or an error. func (obj *Object) Int() (int64, error)  \/\/ Slice returns Object value as []*Object slice or an error. \/\/ It works with sequence objects (lists, tuples, ...). func (obj *Object) Slice() ([]*Object, error)  <\/code><\/pre>\n<h2>\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043e\u0434?<\/h2>\n<p>\u041c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0421\u0430\u043c \u043a\u043e\u0434: <a href=\"https:\/\/github.com\/OpenPrinting\/go-mfp\/tree\/master\/cpython\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/OpenPrinting\/go-mfp\/tree\/master\/cpython<\/a><\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: <a href=\"https:\/\/github.com\/OpenPrinting\/go-mfp\/tree\/master\/cpython\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/OpenPrinting\/go-mfp\/tree\/master\/cpython<\/a><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f &#8212; BSD, \u043b\u0438\u0431\u0435\u0440\u0430\u043b\u044c\u043d\u0435\u0435 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442. \u0413\u0438\u0442\u0445\u0430\u0431\u043e\u0432\u0441\u043a\u0438\u043c \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0430\u043c \u0438 \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u043c PR-\u0430\u043c \u044f \u0442\u043e\u0436\u0435 \u0440\u0430\u0434 \ud83d\ude42<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u044b\u0440\u043e\u0432\u0430\u0442 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043e\u043f\u044b\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0441\u044f. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0443\u0441\u0442\u0430\u043a\u0430\u043d\u0438\u0442\u0441\u044f, \u044f \u0432\u044b\u043d\u0435\u0441\u0443 \u0435\u0433\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439.<\/p>\n<p>\u041d\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u043c, \u0442\u043e \u0438\u043c\u0435\u0435\u043c.<\/p>\n<p>\u0412\u043e\u0442.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/919590\/\"> https:\/\/habr.com\/ru\/articles\/919590\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435,<\/p>\n<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041f\u0435\u0432\u0437\u043d\u0435\u0440, \u0438 \u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e \u043d\u0430 \u0421\u0438 \u0438 Go. Go \u043e\u0431\u044b\u0447\u043d\u043e \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0431\u0430\u043a\u0435\u043d\u0434\u043e\u043c, \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0438 \u0432\u043e\u0442 \u044d\u0442\u0438\u043c \u0432\u043e\u0442 \u0432\u0441\u0435\u043c. \u041d\u043e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0435\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u044f \u043f\u0438\u0448\u0443 \u043d\u0430 \u043d\u0451\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u041f\u041e.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 Go? \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043c\u0435\u043d\u044f \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439, \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u044e, \u044f\u0441\u043d\u043e\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u043e\u0439, \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u0438 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439.<\/p>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u043c\u043e\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, <a href=\"https:\/\/github.com\/OpenPrinting\/ipp-usb\" rel=\"noopener noreferrer nofollow\">ipp-usb<\/a>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 Go, \u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u043e \u0432\u0441\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b Linux \u0438 *BSD \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u043e\u0432 \u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a USB \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 IPP over USB \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b &#8212; \u0442.\u0435., \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0441\u0435\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0410 \u0435\u0449\u0435 \u044f \u0447\u043b\u0435\u043d OpenPrinting &#8212; \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0434\u043e\u0442\u0432\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u0430 \u0437\u0430 \u043f\u0435\u0447\u0430\u0442\u044c \u0438, \u043e\u0442\u0447\u0430\u0441\u0442\u0438, \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0441\u0435\u0445 UNIX-like OS \u0438 \u0437\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 \u0432 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438.<\/p>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u043c\u0435\u043d\u044f, \u043a\u0430\u043a \u0445\u043e\u0431\u0431\u0438, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e &#8212; \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0435\u0439 \u043e\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0412 \u0441\u0438\u043b\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043f\u0440\u043e\u0447\u0438\u0439 high load (\u044d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u043e\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u043e\u0440\u043c\u043e\u0437\u043d\u044b\u0435. \u041d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0442\u0435\u0440 \u043c\u0438\u043b\u043b\u0438\u043e\u043d \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443). \u041d\u043e \u0437\u0430\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0448\u0442\u0443\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0448\u0442\u0443\u043a \u0438 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u043c\u043d\u0435 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <strong>Go<\/strong> \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433. \u041d\u0443 \u0442.\u0435., \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u043e\u0433\u043b\u0430 \u0432\u0441\u043e\u0441\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b \u0435\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0420\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u044f \u043e \u0442\u043e\u043c, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0432 \u0432\u044b\u0431\u0438\u0440\u0430\u043b \u043c\u0435\u0436\u0434\u0443 <strong>JS<\/strong>, <strong>Lua<\/strong> \u0438 <strong>Python<\/strong>.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, <strong>JS<\/strong> \u0438 <strong>Lua<\/strong> &#8212; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0438\u0448\u0435\u0432\u044b\u0435 \u044f\u0437\u044b\u043a\u0438. <strong>JS<\/strong> \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443 \u0432\u0441\u0435\u0445 \u0441 \u0432\u0435\u0431\u043e\u043c \u0430 <strong>Lua<\/strong> &#8212; \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0433\u0440. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0431\u043e\u0440 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0430\u043b \u043d\u0430 <strong>Python<\/strong>. \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0437\u043d\u0430\u044e\u0442 \u0432\u0441\u0435, \u0430 \u044f \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0434\u0435\u0436\u0434\u0443, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044f. \u0425\u043e\u0442\u044f \u0441\u0430\u043c \u044f, \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, <strong>Python<\/strong> \u043d\u0435 \u0437\u043d\u0430\u044e \u0438 \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \ud83d\ude42<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 <strong>Python<\/strong>-\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 <strong>Go<\/strong>.<\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439.<\/h2>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 Python-\u0430, \u0438 <a href=\"https:\/\/github.com\/python\/cpython\" rel=\"noopener noreferrer nofollow\">cpython<\/a> &#8212; \u0441\u0430\u043c\u0430\u044f &#171;\u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f&#187; \u0438\u0437 \u043d\u0438\u0445. \u041a\u043e\u0433\u0434\u0430 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u041f\u0438\u0442\u043e\u043d\u0435, \u0438\u043c\u0435\u044e\u0442 \u0432\u0432\u0438\u0434\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0435.<\/p>\n<p>\u0421\u0430\u043c cpython \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 python, \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043d\u0430\u0434 \u043d\u0435\u0439.<\/p>\n<p>API <strong>libpython3<\/strong> \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0438 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u041f\u0438\u0442\u043e\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0451\u043c.<\/p>\n<h2>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0435\u0442\u0435\u0440\u043f\u0435\u043b\u0438\u0432\u044b\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430 \u041f\u0438\u0442\u043e\u043d\u0430 \u043a Go, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445:<\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f libpython3, \u0438 \u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u0430\u044f \u0441 \u043c\u043e\u0438\u043c \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u043e\u043c, \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u041f\u0438\u0442\u043e\u043d\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438 \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 (\u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435) \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u041f\u0438\u0442\u043e\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u041f\u0438\u0442\u043e\u043d\u0430, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0445 \u0432 Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c Go-\u043d\u044b\u043c \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u043e\u043c \u043c\u0443\u0441\u043e\u0440\u0430. \u041d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u0441\u044b\u043b\u043e\u043a.<\/p>\n<\/li>\n<\/ul>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434?<\/h2>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430 \u043d\u0435\u043e\u0431\u044a\u044f\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 GitHub-\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/qur\/gopy\/tree\/python3.13\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u044d\u0442\u043e<\/a> &#8212; \u0432\u0435\u0441\u044c\u043c\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0435\u0441\u044c API, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c\u044b\u0439 libpython3 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043a\u0430\u043a \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c Python \u0432 Go-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0442\u0430\u043a \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Go \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f \u041f\u0438\u0442\u043e\u043d\u0430.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u0437\u043e\u0440 \u0437\u0434\u0435\u0441\u044c \u044f \u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0442\u0435 \u0438\u0437 \u043d\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0439\u0442\u0438, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435.<\/p>\n<h3>\u041b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u043d\u0430 libpython3.XX.so, \u0430 \u043d\u0435 libpython3.so<\/h3>\n<p><strong>libpython3<\/strong> \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435: \u043e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <strong>libpython3.XX.so<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438 <strong>libpython3.so<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u043e \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f (<strong>ELF NEEDED<\/strong>) \u043d\u0430 <strong>libpython3.XX.so<\/strong>.<\/p>\n<p>\u0412\u0441\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043b\u0438\u043d\u043a\u0443\u044e\u0442\u0441\u044f \u043d\u0430 <strong>libpython3.XX.so<\/strong>. \u041f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u041f\u0438\u0442\u043e\u043d\u0430, \u043a\u0430\u043a \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441 <strong>libpython3.XX.so<\/strong> \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043c\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f (<strong>XX<\/strong> &#8212; \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438).<\/p>\n<p>\u041c\u043d\u0435 \u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 <strong>libpython3.so<\/strong>.<\/p>\n<p>\u0423 \u041f\u0438\u0442\u043e\u043d\u0430, \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0447\u0438\u043c, \u0435\u0441\u0442\u044c <a href=\"https:\/\/docs.python.org\/3\/c-api\/stable.html\" rel=\"noopener noreferrer nofollow\">Stable C API<\/a>, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439, \u043f\u0440\u0430\u0432\u0434\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0421\u0438, \u0447\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u041f\u0438\u0442\u043e\u043d\u0430. \u042d\u0442\u043e\u0442 API \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e API, \u043d\u043e \u0436\u0438\u0442\u044c, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e.<\/p>\n<h3>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435.<\/h3>\n<p>\u041f\u0438\u0442\u043e\u043d (libpython3) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 (\u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430) \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/docs.python.org\/3\/c-api\/init.html#sub-interpreter-support\" rel=\"noopener noreferrer nofollow\">Sub-interpreter support<\/a>.<\/p>\n<p>\u0423 \u044d\u0442\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0449\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b &#8212; \u043e\u043d\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u0418\u043b\u0438 Global Interpreter Lock &#8212; \u043e\u043d \u0443 \u043d\u0438\u0445 \u0442\u043e\u0436\u0435 \u043e\u0431\u0449\u0438\u0439 (\u0432\u0435\u0440\u043d\u0435\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c sub-interpreter \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c GIL, \u043d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 Stable API, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c).<\/p>\n<p>\u041f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438 cpython \u043a Go \u0442\u0430\u043a \u043d\u0435 \u0443\u043c\u0435\u044e\u0442.<\/p>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430.<\/h3>\n<p>\u041f\u0438\u0442\u043e\u043d &#8212; \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 Go &#8212; \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e API libpython3 \u0441\u0438\u0448\u043d\u044b\u0439, \u0438 \u0442\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0436\u0438\u0437\u043d\u0438 \u043f\u0438\u0442\u043e\u043d\u044c\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0445 \u0432 \u0441\u0438\u0448\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443.<\/p>\n<p>\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0438 cpython \u043a Go \u044d\u0442\u043e \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442.<\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u0441\u0432\u0438\u043d\u0442\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>\u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0441\u0435 \u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u0443\u0449\u0438\u0435 \u0441\u0431\u043e\u0440\u043a\u0435 \u043c\u0443\u0441\u043e\u0440\u0430 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c Go-\u043d\u043e\u043c\u0443 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u043c\u0438 \u0432 Go \u043f\u0438\u0442\u043e\u043d\u044c\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438.<\/p>\n<p>\u0421 \u0443\u0447\u0451\u0442\u043e\u043c \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0434\u0438\u043d\u0433. \u0423 \u043c\u0435\u043d\u044f \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Go \u0432\u0435\u0441\u044c API libpython3, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043c\u043e\u044f \u0446\u0435\u043b\u044c &#8212; \u044d\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433, \u0430 \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043b \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u043d\u0435\u043f\u043e\u0434\u044a\u0435\u043c\u043d\u044b\u043c.<\/p>\n<p>\u0423\u0442\u0435\u0448\u0430\u044f\u0441\u044c \u044d\u0442\u043e\u0439 \u043c\u044b\u0441\u043b\u044c\u044e, \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b.<\/p>\n<h2>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430<\/h2>\n<p>\u042f \u0432\u0441\u0451 \u0436\u0435 \u043f\u0438\u0448\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u043d\u0435 \u043a\u043d\u0438\u0433\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043c\u043e\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0443\u043c\u0435\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 Go \u0438 \u043d\u0430 \u0421\u0438 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 CGo.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u0445.<\/p>\n<h3>\u041b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u043d\u0430 libpython3.so<\/h3>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438 \u043d\u0430 <strong>libpython3.XX.so<\/strong>, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043a \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u041f\u0438\u0442\u043e\u043d\u0430 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u043d\u043a\u0435\u0440\u0443 <strong>libpython3.so<\/strong> \u0432\u043c\u0435\u0441\u0442\u043e <strong>libpython3.XX.so<\/strong>, \u043b\u0438\u043d\u043a\u0435\u0440 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0438\u043c\u0432\u043e\u043b-\u0442\u043e \u0435\u0441\u0442\u044c, \u043d\u043e \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u043d \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430:<\/p>\n<pre><code>\/usr\/bin\/ld: \/tmp\/go-link-783747701\/000003.o: undefined reference to symbol 'Py_InitializeEx' \/usr\/bin\/ld: \/usr\/lib64\/libpython3.13.so.1.0: error adding symbols: DSO missing from command line <\/code><\/pre>\n<p>\u0425\u043e\u0442\u044f \u0443 \u043b\u0438\u043d\u043a\u0435\u0440\u0430 \u0438 \u0435\u0441\u0442\u044c \u043e\u043f\u0446\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0435\u043c\u0443 \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 <code>#cgo<\/code> \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c. \u0410 \u0435\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0432 <code>Makefile<\/code>, \u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0434\u043b\u044f Go \u0441\u0431\u043e\u0440\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 <code>go build<\/code> \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0442\u0435\u0439\u043b\u0438\u0432\u044b\u043c, \u0447\u0435\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0445\u043e\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <strong>libpython3.XX.so<\/strong> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u043d\u0430 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043d\u0435\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0451\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <strong>dlsym<\/strong>. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u044f, \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0438 \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u0421\u0438:<\/p>\n<pre><code>        static __typeof__(Py_InitializeEx)    *Py_InitializeEx_p;          Py_InitializeEx_p = dlsym(RTLD_DEFAULT, \"Py_InitializeEx\");         if (Py_InitializeEx_p == NULL) {                 fatal_error(\"%s: %s\", \"Py_InitializeEx\", dlerror());         } <\/code><\/pre>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u0451\u0440\u0433\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0443\u0442\u043e\u0440\u043d\u043e, \u043d\u043e \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0438\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043d\u044b\u0445, \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u043d\u043e\u0433\u043e, \u043e\u043a\u043e\u043b\u043e \u0441\u043e\u0442\u043d\u0438.<\/p>\n<h3>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043d\u0438\u043c<\/h3>\n<p>\u0421\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 libpython3 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043d\u0435\u0441\u043b\u043e\u0436\u0435\u043d \u0438 \u0434\u0430\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0443\u0431-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u0432 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0418 \u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u043e\u0442 \u043d\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043e\u0442 \u0441\u043b\u043e\u0432\u0430 &#171;\u0441\u043e\u0432\u0441\u0435\u043c&#187;.<\/p>\n<p>\u0423 \u041f\u0438\u0442\u043e\u043d\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>\u041f\u0438\u0442\u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 thread-local storage \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043d\u0438\u0442\u0435\u0439, \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043d\u0451\u043c \u0441\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a, \u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432.<\/p>\n<p>\u0412 libpython3 API \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u043d\u0438\u0442\u044c\u044e, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <strong>PyThreadState<\/strong>, \u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 <strong>PyInterpreterState<\/strong>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0430\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, <strong>Py_NewInterpreter<\/strong> \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043d\u0438\u0442\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <strong>PyThreadState<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0434\u0438\u043d, \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442: \u041f\u0438\u0442\u043e\u043d \u043e\u0442\u043b\u043e\u0436\u0438\u0442 \u0441\u0432\u043e\u044e \u043b\u0438\u0447\u0438\u043d\u043a\u0443 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0438\u0442\u0438, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430. \u0425\u0443\u0436\u0435, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u043d\u043e\u0433\u043e: \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0438 \u043d\u0438\u0433\u0434\u0435 \u0442\u043e\u043b\u043a\u043e\u043c \u043d\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u0443 \u0438 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0438\u0442\u043e\u043d\u044c\u0438\u043c\u0438 \u0437\u0430\u043f\u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c-\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043d\u0430 Go \u044d\u0442\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e.<\/p>\n<p>\u0418 \u0432\u043e\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0438\u0442\u044c, \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u043e\u044e \u0432 \u0433\u043e\u0440\u043e\u0443\u0442\u0438\u043d\u043a\u0443 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <strong>runtime.LockOSThread<\/strong>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u043e\u043b\u0431\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043d\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439).<\/p>\n<p>\u0421 \u044d\u0442\u043e\u0439 \u0433\u043e\u0440\u043e\u0443\u0442\u0438\u043d\u043a\u043e\u0439 \u044f \u043e\u0431\u0449\u0430\u044e\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043d\u0430\u043b\u044b: \u043f\u043e\u0441\u044b\u043b\u0430\u044e \u0435\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043a\u0430\u043d\u0430\u043b\u0430, \u043a\u0443\u0434\u0430 \u043e\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u041f\u0438\u0442\u043e\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-463794","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=463794"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463794\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=463794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=463794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=463794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}