{"id":16496,"date":"2024-12-09T19:51:44","date_gmt":"2024-12-09T16:21:44","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=16496"},"modified":"2024-12-09T19:51:44","modified_gmt":"2024-12-09T16:21:44","slug":"boosting-python-scripts-cython","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/boosting-python-scripts-cython\/","title":{"rendered":"Cython ile Python betiklerini geli\u015ftirme"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">girii\u015f<\/h2>\n<p>Python g\u00fcn\u00fcm\u00fcz\u00fcn en pop\u00fcler programlama dillerinden biri olabilir, ancak kesinlikle en verimlisi de\u011fil. \u00d6zellikle makine \u00f6\u011frenimi d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar Python&#039;\u0131n sundu\u011fu kullan\u0131m kolayl\u0131\u011f\u0131 u\u011fruna verimlilikten \u00f6d\u00fcn veriyor.<\/p>\n<p>Ancak bu, i\u015fleri ba\u015fka yollarla h\u0131zland\u0131ramayaca\u011f\u0131n\u0131z anlam\u0131na gelmez. Cython, Python ile kolayca elde edilen i\u015flevsellikten \u00f6d\u00fcn vermeden Python betiklerinin hesaplama s\u00fcresini azaltman\u0131n kolay bir yoludur.<\/p>\n<p>Bu e\u011fitim, Python betiklerini h\u0131zland\u0131rmak i\u00e7in Cython kullan\u0131m\u0131n\u0131 tan\u0131tacakt\u0131r. Basit ama hesaplama a\u00e7\u0131s\u0131ndan maliyetli bir g\u00f6revi ele alaca\u011f\u0131z: 1 milyar say\u0131dan olu\u015fan bir Python listesini yineleyen ve toplayan bir for d\u00f6ng\u00fcs\u00fc olu\u015fturmak. Kaynak k\u0131s\u0131tlamas\u0131 olan cihazlarda kod \u00e7al\u0131\u015ft\u0131r\u0131rken zaman \u00e7ok \u00f6nemli oldu\u011fundan, bu konuyu Raspberry Pi (RPi) \u00fczerinde Python kodunu Cython ile nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131 ele alarak inceleyece\u011fiz. Cython, hesaplama h\u0131z\u0131nda \u00f6nemli bir fark yarat\u0131r; t\u0131pk\u0131 bir lazy ve bir yozo gibi.<\/p>\n<h2 id=\"%d9%be%db%8c%d8%b4%d9%86%db%8c%d8%a7%d8%b2%d9%87%d8%a7-%d8%a8%d8%b1%d8%a7%db%8c-%d8%a8%d9%87%db%8c%d9%86%d9%87%d8%b3%d8%a7%d8%b2%db%8c-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa\">Cython ile Python betiklerini optimize etmek i\u00e7in \u00f6n ko\u015fullar<\/h2>\n<ul>\n<li>Python&#039;un temel bilgileri: Python s\u00f6zdizimi, fonksiyonlar\u0131, veri tipleri ve mod\u00fclleri hakk\u0131nda bilgi sahibi olmak.<\/li>\n<li>Temel C\/C++ kavramlar\u0131n\u0131 anlay\u0131n: \u0130\u015faret\u00e7iler, veri tipleri ve kontrol yap\u0131lar\u0131 gibi temel C veya C++ kavramlar\u0131na a\u015final\u0131k.<\/li>\n<li>Python geli\u015ftirme ortam\u0131: Python&#039;\u0131 (tercihen Python 3.x) pip gibi bir paket y\u00f6neticisiyle kurun.<\/li>\n<li>Cython&#039;u y\u00fckleyin: Cython&#039;u pip install cython komutuyla y\u00fckleyin.<\/li>\n<li>Terminal\/Komut Sat\u0131r\u0131 Bilgisi: Terminal veya komut sat\u0131r\u0131nda gezinme ve komutlar\u0131 y\u00fcr\u00fctme konusunda temel beceri.<\/li>\n<\/ul>\n<p>Bu \u00f6n ko\u015fullar, Cython kullanarak Python kodunuzu optimize etmeye ba\u015flaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"262\"  class=\"aligncenter wp-image-16498 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1-300x136.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1-110x50.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1-200x91.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1-380x173.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1-255x116.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09183840\/1-550x250.png 550w\" ><\/a><\/p>\n<h2 id=\"%d9%be%d8%a7%db%8c%d8%aa%d9%88%d9%86-%d9%88-%d8%b3%db%8c%d9%be%d8%a7%db%8c%d8%aa%d9%88%d9%86\">Python ve CPython<\/h2>\n<p>Bir\u00e7ok ki\u015fi, Python gibi dillerin asl\u0131nda ba\u015fka dillerde de uyguland\u0131\u011f\u0131n\u0131n fark\u0131nda de\u011fildir. \u00d6rne\u011fin, Python&#039;\u0131n C dilindeki uygulamas\u0131 CPython olarak bilinir. Bunun Cython&#039;dan farkl\u0131 oldu\u011funu unutmay\u0131n. Farkl\u0131 Python uygulamalar\u0131 hakk\u0131nda daha fazla bilgi i\u00e7in bu makaleyi okuyabilirsiniz.<\/p>\n<p>Python&#039;un varsay\u0131lan ve en pop\u00fcler uygulamas\u0131 C-Python&#039;dur. Bunu kullanman\u0131n \u00f6nemli bir avantaj\u0131 vard\u0131r. C derlenmi\u015f bir dildir ve kodu, do\u011frudan merkezi i\u015flem birimi (CPU) taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131lan makine koduna d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr. \u015eimdi, C derlenmi\u015f bir dilse, Python&#039;\u0131n da ayn\u0131 oldu\u011fu anlam\u0131na m\u0131 geliyor diye sorabilirsiniz.<\/p>\n<p>C&#039;deki (Cpython) 100% Python uygulamas\u0131 derlenmez veya yorumlanmaz. Asl\u0131nda, hem derleme hem de yorumlama bir Python beti\u011finin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 s\u00fcrecinde ger\u00e7ekle\u015fir. Bunu a\u00e7\u0131kl\u0131\u011fa kavu\u015fturmak i\u00e7in, bir Python beti\u011finin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131nda yer alan ad\u0131mlara bakal\u0131m:<\/p>\n<ol>\n<li>Bayt kodu \u00fcretmek i\u00e7in CPython kullanarak kaynak kodunu derleme<\/li>\n<li>CPython yorumlay\u0131c\u0131s\u0131 taraf\u0131ndan bayt kodu yorumlanmas\u0131<\/li>\n<li>CPython yorumlay\u0131c\u0131s\u0131n\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 CPython sanal makinesinde \u00e7al\u0131\u015ft\u0131rma<\/li>\n<\/ol>\n<p>Derleme i\u015flemi, Cpython kaynak kodunu (.py dosyas\u0131) derleyip Cpython bayt kodunu (.pyc dosyas\u0131) \u00fcretti\u011finde ger\u00e7ekle\u015fir. Cpython bayt kodu daha sonra Cpython yorumlay\u0131c\u0131s\u0131 taraf\u0131ndan yorumlan\u0131r ve \u00e7\u0131kt\u0131 Cpython sanal makinesinde y\u00fcr\u00fct\u00fcl\u00fcr. Yukar\u0131daki ad\u0131mlarda g\u00f6sterildi\u011fi gibi, bir Python beti\u011fini \u00e7al\u0131\u015ft\u0131rma s\u00fcreci hem derlemeyi hem de yorumlamay\u0131 i\u00e7erir.<\/p>\n<p>Cpython derleyicisi bayt kodunu yaln\u0131zca bir kez \u00fcretir, ancak yorumlay\u0131c\u0131 kod her \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda \u00e7a\u011fr\u0131l\u0131r. Bayt kodunu yorumlamak genellikle uzun s\u00fcrer. E\u011fer bir yorumlay\u0131c\u0131 kullanmak y\u00fcr\u00fctmeyi yava\u015flat\u0131yorsa, neden kullanas\u0131n\u0131z ki? Bunun temel nedeni, yorumlay\u0131c\u0131n\u0131n Python&#039;\u0131 farkl\u0131 i\u015fletim sistemlerinde kullan\u0131labilir hale getirmesidir. Bayt kodu, CPU \u00fczerinde \u00e7al\u0131\u015fan Cpython sanal makinesindeki makineden ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131 i\u00e7in, herhangi bir de\u011fi\u015fiklik yap\u0131lmadan farkl\u0131 makinelerde \u00e7al\u0131\u015ft\u0131r\u0131labilir.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"654\"  class=\"aligncenter wp-image-16499 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-264x300.png 264w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-110x125.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-200x227.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-380x431.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-255x290.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-300x341.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09184025\/2-550x624.png 550w\" ><\/a><\/p>\n<p>Yorumlay\u0131c\u0131 kullan\u0131lmazsa, Cpython derleyicisi do\u011frudan CPU&#039;da \u00e7al\u0131\u015fan makine kodu \u00fcretir. Farkl\u0131 platformlar\u0131n farkl\u0131 talimatlar\u0131 oldu\u011fundan, kod farkl\u0131 platformlarda \u00e7al\u0131\u015famaz.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"390\"  class=\"aligncenter wp-image-16500 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3-300x203.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3-110x74.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3-200x135.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3-380x257.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3-255x173.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09184215\/3-550x372.png 550w\" ><\/a><\/p>\n<p>K\u0131sacas\u0131, bir derleyici kullanmak s\u00fcreci h\u0131zland\u0131r\u0131r, ancak yorumlay\u0131c\u0131 kodu platformlar aras\u0131 hale getirir. Dolay\u0131s\u0131yla, Python&#039;un C&#039;den daha yava\u015f olmas\u0131n\u0131n nedenlerinden biri de yorumlay\u0131c\u0131 kullan\u0131m\u0131d\u0131r. Derleyicinin yaln\u0131zca bir kez \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, ancak yorumlay\u0131c\u0131n\u0131n kod her \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 unutmay\u0131n.<\/p>\n<p>Python, C&#039;den \u00e7ok daha yava\u015ft\u0131r, ancak bir\u00e7ok programc\u0131 kullan\u0131m\u0131 \u00e7ok daha kolay oldu\u011fu i\u00e7in onu tercih eder. Python, programc\u0131dan bir\u00e7ok ayr\u0131nt\u0131y\u0131 gizler ve bu da sinir bozucu hata ay\u0131klama i\u015flemlerini \u00f6nleyebilir. \u00d6rne\u011fin, Python dinamik olarak yaz\u0131lm\u0131\u015f bir dil oldu\u011fundan, koddaki her de\u011fi\u015fkenin t\u00fcr\u00fcn\u00fc belirtmeye gerek yoktur; Python bunu otomatik olarak \u00e7\u0131kar\u0131r. Buna kar\u015f\u0131l\u0131k, statik olarak yaz\u0131lm\u0131\u015f dillerde (C, C++ veya Java gibi), a\u015fa\u011f\u0131da g\u00f6sterildi\u011fi gibi de\u011fi\u015fken t\u00fcrlerini belirtmeniz gerekir.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-c\" data-lang=\"C\"><code>int x = 10\r\nstring s = \"Hello\"<\/code><\/pre>\n<\/div>\n<p>A\u015fa\u011f\u0131daki Python uygulamas\u0131yla kar\u015f\u0131la\u015ft\u0131r\u0131n:<\/p>\n<p>Dinamik yaz\u0131m, kodlamay\u0131 kolayla\u015ft\u0131r\u0131r, ancak do\u011fru veri t\u00fcr\u00fcn\u00fc bulmak i\u00e7in makineye daha fazla y\u00fck bindirir. Bu da y\u00fcr\u00fctme s\u00fcrecini yava\u015flat\u0131r.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>x = 10\r\ns = \"Hello\"<\/code><\/pre>\n<\/div>\n<p>Genel olarak, Python gibi &quot;\u00fcst d\u00fczey&quot; diller geli\u015ftiriciler i\u00e7in \u00e7ok daha kolay anla\u015f\u0131l\u0131r. Ancak kod y\u00fcr\u00fct\u00fcl\u00fcrken, d\u00fc\u015f\u00fck d\u00fczeyli talimatlara d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi gerekir. Bu d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemi daha fazla zaman al\u0131r ve bu s\u00fcre kullan\u0131m kolayl\u0131\u011f\u0131 u\u011fruna feda edilir.<\/p>\n<p>Zaman \u00f6nemliyse, d\u00fc\u015f\u00fck seviyeli komutlar kullanmal\u0131s\u0131n\u0131z. Yani, \u00f6n u\u00e7 olan Python&#039;da kod yazmak yerine, arka planda Python&#039;\u0131n C ile geli\u015ftirdi\u011fi CPython&#039;u kullanabilirsiniz. Ancak bunu yaparsan\u0131z, Python&#039;da de\u011fil, C&#039;de programl\u0131yormu\u015f gibi hissedersiniz.<\/p>\n<p>CPython \u00e7ok daha karma\u015f\u0131kt\u0131r. CPython&#039;da her \u015fey C&#039;de uygulan\u0131r. Kodlama yaparken C&#039;nin karma\u015f\u0131kl\u0131\u011f\u0131ndan ka\u00e7man\u0131n bir yolu yoktur. Bu y\u00fczden bir\u00e7ok geli\u015ftirici Cython&#039;u tercih eder. Peki Cython, CPython&#039;dan nas\u0131l farkl\u0131d\u0131r?<\/p>\n<h2 id=\"cython-%da%86%da%af%d9%88%d9%86%d9%87-%d9%85%d8%aa%d9%81%d8%a7%d9%88%d8%aa-%d8%a7%d8%b3%d8%aa\">Cython&#039;un fark\u0131 nedir?<\/h2>\n<p>Yukar\u0131da tan\u0131mland\u0131\u011f\u0131 gibi, Cython her iki d\u00fcnyan\u0131n da en iyisini sunan bir dildir: h\u0131z ve kullan\u0131m kolayl\u0131\u011f\u0131. Python&#039;da normal kod yazmaya devam edebilirsiniz, ancak y\u00fcr\u00fctme s\u00fcresini k\u0131saltmak i\u00e7in Cython, Python kodunun baz\u0131 k\u0131s\u0131mlar\u0131n\u0131 C ile de\u011fi\u015ftirmenize olanak tan\u0131r. B\u00f6ylece, her iki dili de tek bir dosyada birle\u015ftirmi\u015f olursunuz. Python&#039;daki her \u015feyin Cython&#039;da da ge\u00e7erli oldu\u011funu, ancak baz\u0131 s\u0131n\u0131rlamalarla birlikte oldu\u011funu unutmay\u0131n.<\/p>\n<p>Normal bir Python dosyas\u0131 .pyx uzant\u0131s\u0131na sahipken, bir Cython dosyas\u0131 .pyx uzant\u0131s\u0131na sahiptir. Ayn\u0131 Python kodu .pyx dosyalar\u0131n\u0131n i\u00e7ine de yaz\u0131labilir, ancak bu dosyalar Cython kodunu kullanman\u0131za da olanak tan\u0131r. Python kodunu bir .pyx dosyas\u0131na yerle\u015ftirmenin, Python kodunu do\u011frudan \u00e7al\u0131\u015ft\u0131rmaktan daha h\u0131zl\u0131 olabilece\u011fini, ancak de\u011fi\u015fken t\u00fcrlerini belirtmek kadar h\u0131zl\u0131 olmayaca\u011f\u0131n\u0131 unutmay\u0131n. Bu nedenle, bu e\u011fitimin odak noktas\u0131 yaln\u0131zca bir .pyx dosyas\u0131na Python kodu yazmak de\u011fil, ayn\u0131 zamanda daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayacak de\u011fi\u015fiklikler yapmakt\u0131r. Bu, programlamaya biraz karma\u015f\u0131kl\u0131k katsa da \u00e7ok zaman kazand\u0131r\u0131r. C programlama konusunda biraz deneyiminiz varsa, bu sizin i\u00e7in daha kolay olacakt\u0131r.<\/p>\n<h2 id=\"%d8%b3%d8%a7%db%8c%d8%aa%d8%b1%d9%88%d9%86-%da%a9%d8%b1%d8%af%d9%86-%da%a9%d8%af-%d8%b3%d8%a7%d8%af%d9%87-%d9%be%d8%a7%db%8c%d8%aa%d9%88%d9%86\">Basit Python kodunun sitronla\u015ft\u0131r\u0131lmas\u0131<\/h2>\n<p>Python kodunu Cython&#039;a d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in \u00f6ncelikle . uzant\u0131l\u0131 bir dosya olu\u015fturman\u0131z gerekir. <code inline=\"\">.pyx<\/code> Uzant\u0131 yerine olu\u015ftur <code inline=\"\">.py<\/code>. Bu dosyan\u0131n i\u00e7erisinde normal Python kodu yazmaya ba\u015flayabilirsiniz (Cython&#039;un kabul etti\u011fi kodda baz\u0131 s\u0131n\u0131rlamalar oldu\u011funu unutmay\u0131n; bunlar Cython belgelerinde a\u00e7\u0131klanm\u0131\u015ft\u0131r).<\/p>\n<p>Devam etmeden \u00f6nce Cython&#039;un y\u00fckl\u00fc oldu\u011fundan emin olun. Bunu a\u015fa\u011f\u0131daki komutu kullanarak yapabilirsiniz.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>pip install cython\r\n<\/code><\/pre>\n<\/div>\n<p>.pyd\/.so dosyas\u0131n\u0131 olu\u015fturmak i\u00e7in \u00f6nce Cython dosyas\u0131n\u0131 derlememiz gerekiyor. .pyd\/.so dosyas\u0131, daha sonra i\u00e7e aktaraca\u011f\u0131m\u0131z mod\u00fcl\u00fc temsil eder. Cython dosyas\u0131n\u0131 derlemek i\u00e7in bir setup.py dosyas\u0131 kullan\u0131l\u0131r. Bu dosyay\u0131 olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki kodu ekleyin. .pyx dosyas\u0131n\u0131 siyanojenize edecek Cython.Build.cythonize() fonksiyonunu \u00e7a\u011f\u0131rmak i\u00e7in distutils.core.setup() fonksiyonunu kullanaca\u011f\u0131z. Bu fonksiyon, siyanojenize etmek istedi\u011finiz dosyan\u0131n yolunu kabul eder. Burada, setup.py dosyas\u0131n\u0131n test_cython.pyx dosyas\u0131yla ayn\u0131 konumda oldu\u011funu varsayd\u0131m.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import distutils.core\r\nimport Cython.Build\r\ndistutils.core.setup(\r\next_modules = Cython.Build.cythonize(\"test_cython.pyx\"))<\/code><\/pre>\n<\/div>\n<p>Cython dosyas\u0131n\u0131 olu\u015fturmak i\u00e7in komut sat\u0131r\u0131na a\u015fa\u011f\u0131daki komutu girin. Komut sat\u0131r\u0131n\u0131n ge\u00e7erli dizininin, setup.py dosyas\u0131yla ayn\u0131 dizin olmas\u0131 beklenir.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>python setup.py build_ext --inplace\r\n<\/code><\/pre>\n<\/div>\n<p>Bu komut tamamland\u0131ktan sonra, .pyx dosyas\u0131n\u0131n yan\u0131na iki dosya yerle\u015ftirilecektir. \u0130lk dosyan\u0131n uzant\u0131s\u0131 .c, di\u011fer dosyan\u0131n uzant\u0131s\u0131 ise .pyd (veya kullan\u0131lan i\u015fletim sistemine ba\u011fl\u0131 olarak benzer bir uzant\u0131) olacakt\u0131r. Olu\u015fturulan dosyay\u0131 kullanmak i\u00e7in test_cython mod\u00fcl\u00fcn\u00fc i\u00e7e aktarman\u0131z yeterlidir; a\u015fa\u011f\u0131da g\u00f6rebilece\u011finiz gibi, &quot;Merhaba Cython&quot; mesaj\u0131 do\u011frudan g\u00f6r\u00fcnt\u00fclenecektir.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185034\/4.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"195\"  height=\"47\"  class=\"aligncenter wp-image-16501 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 195px) 100vw, 195px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185034\/4.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185034\/4.png 195w, https:\/\/cdn.itpiran.net\/2024\/12\/09185034\/4-110x27.png 110w\" ><\/a><\/p>\n<p>Python kodunu ba\u015far\u0131yla Cytonize ettik. Bir sonraki b\u00f6l\u00fcmde, bir d\u00f6ng\u00fcn\u00fcn olu\u015fturuldu\u011fu bir .pyx dosyas\u0131n\u0131 Cytonize etmeye bakaca\u011f\u0131z.<\/p>\n<p>&quot;For&quot; d\u00f6ng\u00fcs\u00fcn\u00fcn sitonize edilmesi\u201c<\/p>\n<p>\u015eimdi \u00f6nceki g\u00f6revimizi optimize edelim: 1 milyon say\u0131y\u0131 tarayan ve toplayan bir for d\u00f6ng\u00fcs\u00fc. Sadece d\u00f6ng\u00fcn\u00fcn verimlili\u011fini inceleyerek ba\u015flayal\u0131m. Zaman mod\u00fcl\u00fc, y\u00fcr\u00fct\u00fclmesinin ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc tahmin etmek i\u00e7in devreye giriyor.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import time\r\nt1 = time.time()\r\nfor k in range(1000000):\r\npass\r\nt2 = time.time()\r\nt = t2-t1\r\nprint(\"%.20f\" % t)<\/code><\/pre>\n<\/div>\n<p>Bir .pyx dosyas\u0131nda, 3 \u00e7al\u0131\u015ft\u0131rma i\u00e7in ortalama s\u00fcre 0,0281 saniyedir. Kod, Core i7-6500U @ 2,5 GHz i\u015flemci ve 16 GB DDR3 RAM&#039;e sahip bir bilgisayarda \u00e7al\u0131\u015fmaktad\u0131r.<\/p>\n<p>Bunu, ortalama 0,0411 saniye olan tipik bir Python dosyas\u0131n\u0131n y\u00fcr\u00fctme s\u00fcresiyle kar\u015f\u0131la\u015ft\u0131r\u0131n. Bu, Cython&#039;un yinelemeler i\u00e7in Python&#039;dan yaln\u0131zca 1,46 kat daha h\u0131zl\u0131 oldu\u011fu anlam\u0131na gelir; for d\u00f6ng\u00fcs\u00fcn\u00fc C h\u0131z\u0131nda \u00e7al\u0131\u015facak \u015fekilde de\u011fi\u015ftirmenize gerek kalmadan bile.<\/p>\n<p>\u015eimdi toplama i\u015flemini yapal\u0131m. Bunu yapmak i\u00e7in range() fonksiyonunu kullanaca\u011f\u0131z.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import time\r\nt1 = time.time()\r\ntotal = 0\r\nfor k in range(1000000):\r\ntotal = total + k\r\nprint \"Total =\", total\r\nt2 = time.time()\r\nt = t2-t1\r\nprint(\"%.100f\" % t)<\/code><\/pre>\n<\/div>\n<p>Her iki beti\u011fin de ayn\u0131 de\u011feri, yani 499999500000 de\u011ferini d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn\u00fc unutmay\u0131n. Python&#039;da bu i\u015flemin tamamlanmas\u0131 ortalama 0,1183 saniye (\u00fc\u00e7 test boyunca) s\u00fcrer. Cython&#039;da ise 1,35 kat daha h\u0131zl\u0131d\u0131r ve ortalama 0,0875 saniye s\u00fcrer.<\/p>\n<p>\u015eimdi d\u00f6ng\u00fcn\u00fcn 0&#039;dan ba\u015flay\u0131p 1 milyar say\u0131 boyunca devam etti\u011fi ba\u015fka bir \u00f6rne\u011fe bakal\u0131m.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import time\r\nt1 = time.time()\r\ntotal = 0\r\nfor k in range(1000000000):\r\ntotal = total + k\r\nprint \"Total =\", total\r\nt2 = time.time()\r\nt = t2-t1\r\nprint(\"%.20f\" % t)<\/code><\/pre>\n<\/div>\n<p>Cython beti\u011fi yakla\u015f\u0131k 85 saniyede (1,4 dakika), Python beti\u011fi ise yakla\u015f\u0131k 115 saniyede (1,9 dakika) tamamland\u0131. Her iki durumda da \u00e7ok zaman al\u0131yor. B\u00f6ylesine basit bir g\u00f6revi tamamlamak bir dakikadan fazla s\u00fcr\u00fcyorsa Cython kullanman\u0131n ne anlam\u0131 var? Bunun Cython&#039;un de\u011fil, bizim hatam\u0131z oldu\u011funu unutmay\u0131n.<\/p>\n<p>Daha \u00f6nce de belirtildi\u011fi gibi, Python kodunu bir Cython beti\u011fi (.pyx) i\u00e7ine yazmak bir iyile\u015ftirmedir, ancak \u00e7al\u0131\u015fma zaman\u0131nda \u00f6nemli bir fark yaratmaz. Cython beti\u011fi i\u00e7indeki Python kodunda baz\u0131 de\u011fi\u015fiklikler yapmam\u0131z gerekiyor. Yapmam\u0131z gereken ilk \u015fey, kullan\u0131lan de\u011fi\u015fkenlerin veri t\u00fcr\u00fcn\u00fc a\u00e7\u0131k\u00e7a belirtmektir.<\/p>\n<h2 id=\"%d8%aa%d8%ae%d8%b5%db%8c%d8%b5-%d9%86%d9%88%d8%b9-%d8%af%d8%a7%d8%af%d9%87-c-%d8%a8%d9%87-%d9%85%d8%aa%d8%ba%db%8c%d8%b1%d9%87%d8%a7\">C veri tiplerini de\u011fi\u015fkenlere atama<\/h2>\n<p>\u00d6nceki kodda oldu\u011fu gibi, 5 de\u011fi\u015fken kullan\u0131lm\u0131\u015ft\u0131r: toplam, k, t1, t2 ve t. T\u00fcm bu de\u011fi\u015fkenlerin veri t\u00fcrleri kod taraf\u0131ndan dolayl\u0131 olarak \u00e7\u0131kar\u0131ld\u0131\u011f\u0131 i\u00e7in daha fazla zaman al\u0131r. Veri t\u00fcr\u00fcn\u00fc \u00e7\u0131karsamak i\u00e7in harcanan zamandan tasarruf etmek ad\u0131na, veri t\u00fcr\u00fcn\u00fc C dilinden atayal\u0131m.<\/p>\n<p>Toplam de\u011fi\u015fkeninin t\u00fcr\u00fc unsigned long long int&#039;tir. T\u00fcm say\u0131lar\u0131n toplam\u0131 bir tam say\u0131 oldu\u011fu i\u00e7in tam say\u0131d\u0131r ve toplam her zaman pozitif olaca\u011f\u0131 i\u00e7in i\u015faretsizdir. Peki neden long long? T\u00fcm say\u0131lar\u0131n toplam\u0131 \u00e7ok b\u00fcy\u00fck oldu\u011fundan, de\u011fi\u015fkeni m\u00fcmk\u00fcn oldu\u011funca b\u00fcy\u00fck yapmak i\u00e7in long long kullan\u0131l\u0131r.<\/p>\n<p>k de\u011fi\u015fkenine atanan veri t\u00fcr\u00fc int&#039;tir ve kalan \u00fc\u00e7 de\u011fi\u015fken t1, t2 ve t&#039;ye float veri t\u00fcr\u00fc atanm\u0131\u015ft\u0131r.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import time\r\ncdef unsigned long long int total\r\ncdef int k\r\ncdef float t1, t2, t\r\nt1 = time.time()\r\nfor k in range(1000000000):\r\ntotal = total + k\r\nprint \"Total =\", total\r\nt2 = time.time()\r\nt = t2-t1\r\nprint(\"%.100f\" % t)<\/code><\/pre>\n<\/div>\n<p>Son print ifadesinde tan\u0131mlanan hassasiyetin 100 olarak ayarland\u0131\u011f\u0131n\u0131 ve t\u00fcm bu say\u0131lar\u0131n s\u0131f\u0131r oldu\u011funu fark edin (bir sonraki g\u00f6rsele bak\u0131n). Cython&#039;dan bekleyebilece\u011fimiz \u015fey budur. Python 1,9 dakikadan fazla s\u00fcrerken, Cython hi\u00e7 zaman almaz. Python&#039;dan 1000 veya 100.000 kat daha h\u0131zl\u0131 oldu\u011funu bile s\u00f6yleyemem; yazd\u0131r\u0131lan zaman i\u00e7in farkl\u0131 hassasiyetler denedim ve yine de hi\u00e7bir say\u0131 g\u00f6r\u00fcnmedi.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"44\"  class=\"aligncenter wp-image-16502 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5-300x23.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5-110x8.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5-200x15.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5-380x29.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5-255x19.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09185717\/5-550x42.png 550w\" ><\/a><\/p>\n<p>range() fonksiyonuna iletilen de\u011feri tutmak i\u00e7in bir tamsay\u0131 de\u011fi\u015fkeni de olu\u015fturabilece\u011finizi unutmay\u0131n. Bu, performans\u0131 daha da art\u0131racakt\u0131r. A\u015fa\u011f\u0131da, de\u011ferin tamsay\u0131 de\u011fi\u015fkeni maxval&#039;da sakland\u0131\u011f\u0131 yeni kod yer almaktad\u0131r.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import time\r\ncdef unsigned long long int maxval\r\ncdef unsigned long long int total\r\ncdef int k\r\ncdef float t1, t2, t\r\nmaxval=1000000000\r\nt1=time.time()\r\nfor k in range(maxval):\r\ntotal = total + k\r\nprint \"Total =\", total\r\nt2=time.time()\r\nt = t2-t1\r\nprint(\"%.100f\" % t)<\/code><\/pre>\n<\/div>\n<p>Cython kullanarak Python scriptlerinin performans\u0131n\u0131n nas\u0131l art\u0131r\u0131laca\u011f\u0131n\u0131 g\u00f6rd\u00fc\u011f\u00fcm\u00fcze g\u00f6re \u015fimdi bunu Raspberry Pi&#039;ye (RPi) uygulayal\u0131m.<\/p>\n<h2 id=\"%d8%af%d8%b3%d8%aa%d8%b1%d8%b3%d9%be%d8%b0%db%8c%d8%b1%db%8c-raspberry-pi-%d8%a7%d8%b2-%da%a9%d8%a7%d9%85%d9%be%db%8c%d9%88%d8%aa%d8%b1-%d8%b4%d8%ae%d8%b5%db%8c\">Ki\u015fisel bilgisayardan Raspberry Pi eri\u015filebilirli\u011fi<\/h2>\n<p>Raspberry Pi&#039;nizi ilk kez kullan\u0131yorsan\u0131z, hem bilgisayar\u0131n\u0131z\u0131 hem de RPi&#039;nizi bir a\u011fa ba\u011flaman\u0131z gerekecektir. Bunu, her iki cihaz\u0131 da IP adreslerini otomatik olarak atamak i\u00e7in DHCP (Dinamik Ana Bilgisayar Yap\u0131land\u0131rma Protokol\u00fc) etkinle\u015ftirilmi\u015f bir anahtara ba\u011flayarak yapabilirsiniz. A\u011f ba\u015far\u0131yla olu\u015fturulduktan sonra, RPi&#039;nize atanan IPv4 adresine g\u00f6re eri\u015febilirsiniz. Peki, RPi&#039;nizin hangi IPv4 adresine atand\u0131\u011f\u0131n\u0131 nas\u0131l \u00f6\u011frenebilirsiniz? Endi\u015felenmeyin, bir IP taray\u0131c\u0131 arac\u0131 kullanabilirsiniz. Bu e\u011fitimde, Advanced IP Scanner adl\u0131 \u00fccretsiz bir uygulama kullanaca\u011f\u0131m.<\/p>\n<p>Bu uygulaman\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc a\u015fa\u011f\u0131daki gibidir. Bu uygulama, arama yapmak i\u00e7in bir dizi IPv4 adresi kabul eder ve etkin cihazlar hakk\u0131nda bilgi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"366\"  class=\"aligncenter wp-image-16503 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6-300x191.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6-110x70.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6-200x127.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6-380x241.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6-255x162.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09185936\/6-550x349.png 550w\" ><\/a><\/p>\n<p>Yerel a\u011f\u0131n\u0131zdaki IPv4 adres aral\u0131\u011f\u0131n\u0131 girmeniz gerekir. Bu aral\u0131\u011f\u0131 bilmiyorsan\u0131z, bilgisayar\u0131n\u0131z\u0131n IPv4 adresini bulmak i\u00e7in Windows&#039;ta ipconfig komutunu (veya Linux&#039;ta ifconfig komutunu) \u00e7al\u0131\u015ft\u0131rman\u0131z yeterlidir (a\u015fa\u011f\u0131daki \u015fekilde g\u00f6sterildi\u011fi gibi). Benim durumumda, bilgisayar\u0131m\u0131n Wi-Fi ba\u011fda\u015ft\u0131r\u0131c\u0131s\u0131na atanan IPv4 adresi 192.168.43.177 ve alt a\u011f maskesi 255.255.255.0&#039;d\u0131r. Bu, a\u011fdaki IPv4 adres aral\u0131\u011f\u0131n\u0131n 192.168.43.1 ile 192.168.43.255 aras\u0131nda oldu\u011fu anlam\u0131na gelir. \u015eekilde g\u00f6sterildi\u011fi gibi, 192.168.43.1 IPv4 adresi A\u011f Ge\u00e7idine atanm\u0131\u015ft\u0131r. Bu aral\u0131ktaki son IPv4 adresi olan 192.168.43.255&#039;in yay\u0131n mesajlar\u0131 i\u00e7in ayr\u0131ld\u0131\u011f\u0131n\u0131 unutmay\u0131n. Yani arama yapman\u0131z gereken aral\u0131k 192.168.43.2&#039;de ba\u015flay\u0131p 192.168.43.254&#039;te bitiyor.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"544\"  height=\"170\"  class=\"aligncenter wp-image-16504 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 544px) 100vw, 544px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7.png 544w, https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7-300x94.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7-110x34.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7-200x63.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7-380x119.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09190052\/7-255x80.png 255w\" ><\/a><\/p>\n<p>Bir sonraki \u015fekilde g\u00f6sterilen tarama sonucuna g\u00f6re, RPi&#039;ye atanan IPv4 adresi 192.168.43.63&#039;t\u00fcr. Bu IPv4 adresi, G\u00fcvenli Kabuk (SSH) oturumu kurmak i\u00e7in kullan\u0131labilir.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"366\"  class=\"aligncenter wp-image-16505 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8-300x191.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8-110x70.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8-200x127.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8-380x241.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8-255x162.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09190516\/8-550x349.png 550w\" ><\/a><\/p>\n<p>SSH oturumu olu\u015fturmak i\u00e7in MobaXterm adl\u0131 \u00fccretsiz bir yaz\u0131l\u0131m kullanaca\u011f\u0131m. Bu program\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc a\u015fa\u011f\u0131daki gibidir.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"307\"  class=\"aligncenter wp-image-16506 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9-300x160.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9-110x59.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9-200x107.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9-380x203.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9-255x136.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09190623\/9-550x293.png 550w\" ><\/a><\/p>\n<p>Bir SSH oturumu olu\u015fturmak i\u00e7in sol \u00fcst k\u00f6\u015fedeki Oturum d\u00fc\u011fmesine t\u0131klaman\u0131z yeterlidir. A\u015fa\u011f\u0131da g\u00f6sterildi\u011fi gibi yeni bir pencere a\u00e7\u0131lacakt\u0131r.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"387\"  class=\"aligncenter wp-image-16507 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10-300x202.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10-110x74.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10-200x134.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10-380x255.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10-255x171.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09190749\/10-550x370.png 550w\" ><\/a><\/p>\n<p>Bu pencereden, sol \u00fcst k\u00f6\u015fedeki SSH d\u00fc\u011fmesine t\u0131klayarak a\u015fa\u011f\u0131da g\u00f6sterilen pencereyi a\u00e7\u0131n. Raspberry Pi&#039;nizin IPv4 adresini ve kullan\u0131c\u0131 ad\u0131n\u0131 (varsay\u0131lan olarak pi) girin ve ard\u0131ndan oturumu ba\u015flatmak i\u00e7in Tamam&#039;a t\u0131klay\u0131n.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"387\"  class=\"aligncenter wp-image-16508 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11-300x202.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11-110x74.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11-200x134.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11-380x255.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11-255x171.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09190859\/11-550x370.png 550w\" ><\/a><\/p>\n<p>Tamam d\u00fc\u011fmesine t\u0131klad\u0131ktan sonra, parolan\u0131z\u0131 girmenizi isteyen yeni bir pencere a\u00e7\u0131lacakt\u0131r. Varsay\u0131lan parola raspberrypi&#039;dir. Giri\u015f yapt\u0131ktan sonra a\u015fa\u011f\u0131daki pencere a\u00e7\u0131lacakt\u0131r. Sol b\u00f6lme, Raspberry Pi dizinlerinizde kolayca gezinmenize yard\u0131mc\u0131 olacakt\u0131r. Ayr\u0131ca komutlar\u0131 girmek i\u00e7in bir komut sat\u0131r\u0131 da mevcuttur.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"307\"  class=\"aligncenter wp-image-16509 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12-300x160.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12-110x59.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12-200x107.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12-380x203.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12-255x136.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09190959\/12-550x293.png 550w\" ><\/a><\/p>\n<h2 id=\"%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-cython-%d8%a8%d8%a7-raspberry-pi\">Cython&#039;u Raspberry Pi ile Kullanma<\/h2>\n<p>\u00d6nceki \u00f6rnekteki kodu yazmak i\u00e7in yeni bir dosya olu\u015fturun ve uzant\u0131s\u0131n\u0131 .pyx olarak de\u011fi\u015ftirin. Sol panel \u00e7ubu\u011funda yeni dosya ve dizin olu\u015fturma se\u00e7enekleri bulunur. A\u015fa\u011f\u0131daki g\u00f6rselde g\u00f6sterildi\u011fi gibi, bunu kolayla\u015ft\u0131rmak i\u00e7in yeni dosya simgesini kullanabilirsiniz. Raspberry Pi&#039;nin k\u00f6k dizininde test_cython.pyx adl\u0131 bir dosya olu\u015fturdum.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191116\/14.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"223\"  height=\"328\"  class=\"aligncenter wp-image-16510 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 223px) 100vw, 223px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191116\/14.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191116\/14.png 223w, https:\/\/cdn.itpiran.net\/2024\/12\/09191116\/14-204x300.png 204w, https:\/\/cdn.itpiran.net\/2024\/12\/09191116\/14-110x162.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09191116\/14-200x294.png 200w\" ><\/a><\/p>\n<p>Dosyay\u0131 a\u00e7mak i\u00e7in \u00e7ift t\u0131klay\u0131n, kodu yap\u0131\u015ft\u0131r\u0131n ve kaydedin. Ard\u0131ndan, daha \u00f6nce bahsetti\u011fimiz gibi setup.py dosyas\u0131n\u0131 olu\u015fturmam\u0131z gerekiyor. Ard\u0131ndan, Cython beti\u011fini olu\u015fturmak i\u00e7in a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rmam\u0131z gerekiyor.<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>python3 setup.py build_ext --inplace\r\n<\/code><\/pre>\n<\/div>\n<p>Bu komut ba\u015far\u0131yla tamamland\u0131ktan sonra, \u00e7\u0131kt\u0131 dosyalar\u0131n\u0131 a\u015fa\u011f\u0131daki \u015fekilde g\u00f6sterildi\u011fi gibi sol panelde bulabilirsiniz. Art\u0131k Windows kullanmad\u0131\u011f\u0131m\u0131z i\u00e7in, i\u00e7e aktar\u0131lacak mod\u00fcl\u00fcn uzant\u0131s\u0131n\u0131n art\u0131k .so oldu\u011funu unutmay\u0131n.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"521\"  height=\"386\"  class=\"aligncenter wp-image-16511 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 521px) 100vw, 521px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15.png 521w, https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15-300x222.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15-110x81.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15-200x148.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15-380x282.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09191406\/15-255x189.png 255w\" ><\/a><\/p>\n<p>\u015eimdi Python&#039;u etkinle\u015ftirip mod\u00fcl\u00fc a\u015fa\u011f\u0131da g\u00f6sterildi\u011fi gibi i\u00e7e aktaral\u0131m. Burada da bilgisayardakiyle ayn\u0131 sonu\u00e7lar elde ediliyor; neredeyse s\u0131f\u0131r zaman al\u0131yor.<\/p>\n<p><a href=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16.png\"><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"576\"  height=\"94\"  class=\"aligncenter wp-image-16512 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 576px) 100vw, 576px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16.png 576w, https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16-300x49.png 300w, https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16-110x18.png 110w, https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16-200x33.png 200w, https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16-380x62.png 380w, https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16-255x42.png 255w, https:\/\/cdn.itpiran.net\/2024\/12\/09191524\/16-550x90.png 550w\" ><\/a><\/p>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Sonu\u00e7<\/h2>\n<p>Bu e\u011fitimde, Python betiklerini \u00e7al\u0131\u015ft\u0131rman\u0131n hesaplama s\u00fcresini azaltmak i\u00e7in Cython&#039;un nas\u0131l kullan\u0131laca\u011f\u0131 ele al\u0131nd\u0131. D\u00f6ng\u00fc kullan\u0131m\u0131na dair bir \u00f6rnek g\u00f6sterece\u011fiz. <code inline=\"\">i\u00e7in<\/code> 1 milyar say\u0131dan olu\u015fan bir Python listesinin t\u00fcm \u00f6\u011felerini eklemeyi inceledik ve de\u011fi\u015fkenleri bildirerek ve bildirmeden y\u00fcr\u00fctme s\u00fcrelerini kar\u015f\u0131la\u015ft\u0131rd\u0131k. Bu i\u015flem saf Python&#039;da yakla\u015f\u0131k iki dakika s\u00fcrerken, Cython kullanarak ve statik de\u011fi\u015fkenler bildirerek neredeyse hi\u00e7 zaman kaybetmeden tamamlan\u0131r.<\/p>","protected":false},"excerpt":{"rendered":"Giri\u015f Python g\u00fcn\u00fcm\u00fcz\u00fcn en pop\u00fcler programlama dillerinden biri olabilir, ancak kesinlikle en verimlisi de\u011fildir. \u00d6zellikle de...","protected":false},"author":1,"featured_media":16513,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"[]","_yoast_wpseo_primary_category":"193","footnotes":""},"categories":[193,363],"tags":[376],"class_list":{"0":"post-16496","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-programming","9":"tag-python"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646 - \u0628\u0644\u0627\u06af ITPiran<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/boosting-python-scripts-cython\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646 - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0627\u0645\u0631\u0648\u0632\u06cc \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0642\u0637\u0639\u0627\u064b \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631\u06cc\u0646 \u0646\u06cc\u0633\u062a. \u0628\u0647\u200c\u0648\u06cc\u0698\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/boosting-python-scripts-cython\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-09T16:21:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/12\/09195033\/python-to-sython.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646\",\"datePublished\":\"2024-12-09T16:21:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/\"},\"wordCount\":207,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/12\\\/09195033\\\/python-to-sython.jpg\",\"keywords\":[\"Python\"],\"articleSection\":[\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/\",\"name\":\"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646 - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/12\\\/09195033\\\/python-to-sython.jpg\",\"datePublished\":\"2024-12-09T16:21:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/12\\\/09195033\\\/python-to-sython.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/12\\\/09195033\\\/python-to-sython.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/boosting-python-scripts-cython\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tr\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cython ile Python Betiklerini Geli\u015ftirme - ITPiran Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/boosting-python-scripts-cython\/","og_locale":"tr_TR","og_type":"article","og_title":"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646 - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628\u200c\u062a\u0631\u06cc\u0646 \u0632\u0628\u0627\u0646\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u0627\u0645\u0631\u0648\u0632\u06cc \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0642\u0637\u0639\u0627\u064b \u06a9\u0627\u0631\u0622\u0645\u062f\u062a\u0631\u06cc\u0646 \u0646\u06cc\u0633\u062a. \u0628\u0647\u200c\u0648\u06cc\u0698\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/boosting-python-scripts-cython\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-12-09T16:21:44+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/12\/09195033\/python-to-sython.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"admin","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646","datePublished":"2024-12-09T16:21:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/"},"wordCount":207,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/12\/09195033\/python-to-sython.jpg","keywords":["Python"],"articleSection":["\u0622\u0645\u0648\u0632\u0634\u06cc","\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/","name":"Cython ile Python Betiklerini Geli\u015ftirme - ITPiran Blog","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/12\/09195033\/python-to-sython.jpg","datePublished":"2024-12-09T16:21:44+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/12\/09195033\/python-to-sython.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/12\/09195033\/python-to-sython.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/boosting-python-scripts-cython\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634\u06cc","item":"https:\/\/www.itpiran.net\/blog\/category\/tutorials\/"},{"@type":"ListItem","position":3,"name":"\u0628\u0647\u0628\u0648\u062f \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0633\u0627\u06cc\u062b\u0648\u0646"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"ITPiran Blog","description":"\u0130ran S\u00fcrd\u00fcr\u00fclebilir Ticaret Haberleri ve Makaleleri","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"S\u00fcrd\u00fcr\u00fclebilir \u0130ran \u0130\u015fletmeleri Blogu","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"y\u00f6netici","url":"https:\/\/www.itpiran.net\/blog\/tr\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/16496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/comments?post=16496"}],"version-history":[{"count":1,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/16496\/revisions"}],"predecessor-version":[{"id":16514,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/16496\/revisions\/16514"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media\/16513"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media?parent=16496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/categories?post=16496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/tags?post=16496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}