{"id":23103299,"url":"https://github.com/themusharraf/ctopython","last_synced_at":"2026-04-17T03:02:45.740Z","repository":{"id":253093064,"uuid":"842439365","full_name":"themusharraf/ctopython","owner":"themusharraf","description":"C dasturlash tilida code yozib va uni Python-da ishlatish qiziqarli loyiha bo‘lishi mumkin.","archived":false,"fork":false,"pushed_at":"2024-11-16T15:51:25.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T21:32:23.813Z","etag":null,"topics":["c","clang","cpp","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/themusharraf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-14T11:00:30.000Z","updated_at":"2024-11-20T05:26:22.000Z","dependencies_parsed_at":"2024-09-09T20:33:18.668Z","dependency_job_id":"ca2418f5-4aeb-4d21-89b2-c6899f8ebc15","html_url":"https://github.com/themusharraf/ctopython","commit_stats":null,"previous_names":["themusharraf/ctopython"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/themusharraf/ctopython","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Fctopython","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Fctopython/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Fctopython/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Fctopython/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/themusharraf","download_url":"https://codeload.github.com/themusharraf/ctopython/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/themusharraf%2Fctopython/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31913078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","clang","cpp","python"],"created_at":"2024-12-17T00:13:29.269Z","updated_at":"2026-04-17T03:02:45.707Z","avatar_url":"https://github.com/themusharraf.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C dan Python ga\n\n![DALL·E 2024-11-16 20 45 58 - A creative and visually appealing illustration showing an integration of C_C++ and Python  On the left, a blue box labeled 'C_C++' with a modern tech ](https://github.com/user-attachments/assets/77f41974-016d-4cb1-a3b0-232b1989044c)\n\n\n\n### Commonds\n- C codeni compilyatsiya qilib beradi\n```shell\ngcc main.c -o main\n./main\n```\n--- \n- Python code ishga tushuradi\n```shell\npython3 main.py\n```\n---\n- C da yozilgan code ni `.so` ga o'tkazib beradi\n```shell\ngcc -shared -o main.so -fPIC main.c\n```\n- `gcc`: Bu GNU Compiler Collection, C va boshqa tillar uchun keng qo'llaniladigan kompilyator.\n- `-shared`: Bu parametr kompilyatorga umumiy kutubxona (yoki dinamik kutubxona) yaratishni aytadi. Umumiy kutubxona — bu kompilyatsiyadan o'tgan funksiya va ma'lumotlar to'plami bo'lib, ularni turli dasturlar ishlatishlari mumkin. Linux tizimlarida ushbu parametr odatda `.so` kengaytmasiga ega fayl yaratadi.\n- `-o main.so`: Bu parametr chiqish fayl nomini belgilaydi. `-o` opsiyasi kompilyatorga chiqish faylini `main.so` deb nomlashni aytadi. Siz `main` o‘rniga kutubxonangiz uchun istalgan nomni qo‘yishingiz mumkin.\n- `-fPIC`: Bu \"Position-Independent Code\" (Manzilga Bog'liq Bo'lmagan Kod) degan ma'noni anglatadi. Bu parametr kompilyatorga xotirada yuklangan aniq manzildan mustaqil bo'lgan mashina kodi yaratishni aytadi. Bu umumiy kutubxonalar uchun zarur, chunki ularni turli dasturlar tomonidan xotiraning turli manzillariga yuklash mumkin.\n- `main.c`: Bu umumiy kutubxonaga kompilyatsiya qilinadigan manba fayl. `main.c` fayli siz yaratmoqchi bo'lgan umumiy kutubxona uchun kodni o'z ichiga oladi.\n### Buyruq nima qiladi?\n- Ushbu buyruq `main.c` faylini umumiy kutubxona `main.so` ga kompilyatsiya qiladi va manzilga bog'liq bo'lmagan kod yaratadi.\n\n### Qachon ishlatiladi?\n- Bu buyruqdan mustaqil bajariladigan dasturdan ko'ra, umumiy kutubxona yaratmoqchi bo'lganingizda foydalaniladi. Umumiy kutubxonalar turli dasturlar tomonidan ishlatilishi mumkin bo'lgan qayta ishlatiladigan kod yaratishda foydalidir, bu esa takrorlanishni kamaytiradi va yangilanishlarni osonlashtiradi.\n\n### Example 1\n```shell\n// main.c\n#include \u003cstdio.h\u003e\n\nint main(){\n    printf(\"Hi Python\\n\");\n    return 0;\n}\n```\n- Yuqoridagi C code ni Python code ga chaqirish\n```python\n# main.py\nimport ctypes\n\ncode = ctypes.CDLL(\"./main_1.so\")\n\ncode.main()\n```\n- ishga tushurish \n```shell\ngcc -shared -o main.so -fPIC main.c\npython3 main.py\n```\n---\n\n### Example 4\n\n- C da `fibonacci` n-darajasini aniqlash funksiyasi\n```shell\n// main_4.c\n\nint fib(int n) {\n    if (n \u003c= 1)\n        return n;\n    return fib(n-1) + fib(n-2);\n}\n```\n- Bu Python da `fibonacci` n-darajasini aniqlash funksiyasi va C da yozilgan `fibonacci` func code ni chaqirib ishlatib farqini ko'ramiz\n```python\nimport time\n\nimport ctypes\n\ncode = ctypes.CDLL('./main_4.so')\n\ncode.fib.argtypes = (ctypes.c_int,)\ncode.fib.restype = ctypes.c_int\n\nn = 35  # N-ni aniqlash # noqa\n\n\n# Fibonacci sonini Python'da hisoblash # noqa\ndef python_fib(n):\n    if n \u003c= 1:\n        return n\n    return python_fib(n - 1) + python_fib(n - 2)\n\n\n# 1. Python kodini sinash # noqa\nstart_time = time.time()\npython_result = python_fib(n)\npython_time = time.time() - start_time\nprint(f\"Python'da vaqt: {python_time:.6f} soniya, Natija: {python_result}\")  # noqa\n\n# 2. C kodini sinash # noqa\nstart_time = time.time()\nc_result = code.fib(n)\nc_time = time.time() - start_time\nprint(f\"C'da vaqt: {c_time:.6f} soniya, Natija: {c_result}\")  # noqa\n\n# Vaqt farqini chiqaramiz # noqa\nprint(f\"C kodining tezligi Python'dan {python_time / c_time:.2f} marta tezroq\")  # noqa\n```\n- ishga tushurish \n```shell\ngcc -shared -o main_4.so -fPIC main_4.c\npython3 main_4.py\n```\n- Natija\n```\nPython'da vaqt: 1.116683 soniya, Natija: 9227465\nC'da vaqt: 0.049001 soniya, Natija: 9227465\nC kodining tezligi Python'dan 22.79 marta tezroq\n\n```\nUmid qilama sizga bu foydali buldi 😊 \n\nTelegram address: [Engineering blog](https://t.me/musharrafme)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemusharraf%2Fctopython","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemusharraf%2Fctopython","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemusharraf%2Fctopython/lists"}