{"id":16211,"date":"2024-10-10T20:09:25","date_gmt":"2024-10-10T16:39:25","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=16211"},"modified":"2024-10-10T20:09:25","modified_gmt":"2024-10-10T16:39:25","slug":"getting-started-with-pypy","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/getting-started-with-pypy\/","title":{"rendered":"PyPy&#039;ye ba\u015flarken"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">girii\u015f<\/h2>\n<p>Python programlama dili, bir\u00e7ok farkl\u0131 \u015fekilde uygulanabilen bir aray\u00fczd\u00fcr. Baz\u0131 \u00f6rnekler aras\u0131nda C dilini kullanan CPython, Java kullan\u0131larak uygulanan Jython vb. yer almaktad\u0131r.<\/p>\n<p>En pop\u00fcler olmas\u0131na ra\u011fmen, CPython en h\u0131zl\u0131s\u0131 de\u011fil. PyPy, hem uyumlu hem de h\u0131zl\u0131 olan alternatif bir Python uygulamas\u0131d\u0131r. PyPy, uzun s\u00fcren i\u015flemlerin y\u00fcr\u00fctme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azaltan JIT derlemesine dayan\u0131r.<\/p>\n<p>Bu e\u011fitimde, yeni ba\u015flayanlar i\u00e7in PyPy&#039;yi tan\u0131taca\u011f\u0131z ve CPython&#039;dan farkl\u0131l\u0131klar\u0131n\u0131 vurgulayaca\u011f\u0131z. Ayr\u0131ca avantajlar\u0131n\u0131 ve s\u0131n\u0131rlamalar\u0131n\u0131 da ele alaca\u011f\u0131z. Ard\u0131ndan, basit bir Python beti\u011fini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in PyPy&#039;yi nas\u0131l indirece\u011fimizi ve kullanaca\u011f\u0131m\u0131z\u0131 inceleyece\u011fiz.<\/p>\n<p>Bu e\u011fitim \u00f6zellikle a\u015fa\u011f\u0131daki konular\u0131 kapsamaktad\u0131r:<\/p>\n<ul>\n<li>CPython&#039;a k\u0131sa bir genel bak\u0131\u015f<\/li>\n<li>PyPy&#039;ye ve \u00f6zelliklerine giri\u015f<\/li>\n<li>PyPy&#039;nin s\u0131n\u0131rlamalar\u0131<\/li>\n<li>Ubuntu \u00fczerinde PyPy \u00e7al\u0131\u015ft\u0131rmak<\/li>\n<li>PyPy ve CPython \u00e7al\u0131\u015fma zaman\u0131 kar\u015f\u0131la\u015ft\u0131rmas\u0131<\/li>\n<\/ul>\n<h2 id=\"%d9%85%d8%b1%d9%88%d8%b1%db%8c-%d8%b3%d8%b1%db%8c%d8%b9-%d8%a8%d8%b1-cpython\">CPython&#039;a k\u0131sa bir genel bak\u0131\u015f<\/h2>\n<p>PyPy&#039;yi ele almadan \u00f6nce, CPython&#039;un nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak \u00f6nemlidir. A\u015fa\u011f\u0131da, CPython kullan\u0131larak uygulanan bir Python beti\u011finin y\u00fcr\u00fctme hatt\u0131n\u0131n bir resmini g\u00f6rebilirsiniz.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"1405\"  height=\"1595\"  class=\"aligncenter wp-image-16214 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 1405px) 100vw, 1405px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1.png 1405w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-264x300.png 264w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-902x1024.png 902w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-768x872.png 768w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-1353x1536.png 1353w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-110x125.png 110w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-200x227.png 200w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-380x431.png 380w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-255x289.png 255w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-300x341.png 300w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-550x624.png 550w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-800x908.png 800w, https:\/\/cdn.itpiran.net\/2024\/10\/10195645\/1-1160x1317.png 1160w\" ><\/p>\n<p>Verilen bir Python beti\u011fi (.py) i\u00e7in, kaynak kod \u00f6ncelikle CPython derleyicisi kullan\u0131larak bayt koduna derlenir. Bayt kodu olu\u015fturulur ve pyc uzant\u0131l\u0131 bir dosyaya kaydedilir. Ard\u0131ndan bayt kodu, CPython yorumlay\u0131c\u0131s\u0131 kullan\u0131larak sanal bir ortamda y\u00fcr\u00fct\u00fcl\u00fcr.<\/p>\n<p>Kaynak kodu bayt koduna d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in derleyici kullanman\u0131n avantajlar\u0131 vard\u0131r. Derleyici kullan\u0131lmazsa, yorumlay\u0131c\u0131 do\u011frudan kaynak kod \u00fczerinde \u00e7al\u0131\u015f\u0131r ve onu sat\u0131r sat\u0131r makine koduna \u00e7evirir. Bunun dezavantaj\u0131, her bir kaynak kod sat\u0131r\u0131n\u0131 makine koduna \u00e7evirmek i\u00e7in baz\u0131 i\u015flemlerin uygulanmas\u0131 ve bu i\u015flemlerin her sat\u0131r i\u00e7in tekrarlanmas\u0131d\u0131r. \u00d6rne\u011fin, s\u00f6zdizimi analizi di\u011fer sat\u0131rlardan ba\u011f\u0131ms\u0131z olarak her sat\u0131ra uygulan\u0131r ve bu nedenle yorumlay\u0131c\u0131 kodu \u00e7evirmek i\u00e7in \u00e7ok zaman harcar. Derleyici bu sorunu \u00e7\u00f6zer \u00e7\u00fcnk\u00fc t\u00fcm kodu ayn\u0131 anda i\u015fleyebilir ve bu nedenle s\u00f6zdizimi analizi her kod sat\u0131r\u0131 i\u00e7in de\u011fil, yaln\u0131zca bir kez uygulan\u0131r. Bu nedenle derleyiciden \u00fcretilen bayt kodu kolayca yorumlan\u0131r. T\u00fcm kaynak kodun derlenmesinin baz\u0131 durumlarda yararl\u0131 olmayabilece\u011fini ve PyPy&#039;yi tart\u0131\u015f\u0131rken bunun a\u00e7\u0131k bir \u00f6rne\u011fini g\u00f6rece\u011fimizi unutmay\u0131n.<\/p>\n<p>Bayt kodu olu\u015fturulduktan sonra, sanal makinede \u00e7al\u0131\u015fan yorumlay\u0131c\u0131 taraf\u0131ndan y\u00fcr\u00fct\u00fcl\u00fcr. Sanal ortam faydal\u0131d\u0131r \u00e7\u00fcnk\u00fc CPython bayt kodunu makineden ba\u011f\u0131ms\u0131z hale getirerek Python&#039;\u0131 platformlar aras\u0131 uyumlu k\u0131lar.<\/p>\n<p>Ne yaz\u0131k ki, yaln\u0131zca bayt kodu \u00fcretmek i\u00e7in bir derleyici kullanmak CPython y\u00fcr\u00fctme h\u0131z\u0131n\u0131 art\u0131rmak i\u00e7in yeterli de\u011fildir. Yorumlay\u0131c\u0131, kod her y\u00fcr\u00fct\u00fcld\u00fc\u011f\u00fcnde makine koduna \u00e7evirerek \u00e7al\u0131\u015f\u0131r. Dolay\u0131s\u0131yla, bir sat\u0131r\u0131n y\u00fcr\u00fct\u00fclmesi LX saniye s\u00fcr\u00fcyorsa, 10 kez y\u00fcr\u00fct\u00fclmesi X*10 saniyeye mal olur. Uzun s\u00fcren i\u015flemler i\u00e7in bu, y\u00fcr\u00fctme s\u00fcresi a\u00e7\u0131s\u0131ndan \u00e7ok maliyetlidir.<\/p>\n<p>CPython&#039;daki hatalara dayanarak, \u015fimdi de PyPy&#039;ye bir g\u00f6z atal\u0131m.<\/p>\n<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87-%d8%a7%db%8c-%d8%a8%d8%b1-pypy-%d9%88-%d9%88%db%8c%da%98%da%af%db%8c-%d9%87%d8%a7%db%8c-%d8%a2%d9%86\">PyPy&#039;ye ve \u00f6zelliklerine giri\u015f<\/h2>\n<p>PyPy, hem uyumlu hem de h\u0131zl\u0131 olan, CPython&#039;a benzer bir Python uygulamas\u0131d\u0131r. &quot;Uyumlu&quot; demek, PyPy&#039;nin CPython ile uyumlu oldu\u011fu, yani neredeyse t\u00fcm CPython komutlar\u0131n\u0131 PyPy&#039;de kullanabilece\u011finiz anlam\u0131na gelir. Burada belirtildi\u011fi gibi, baz\u0131 uyumluluk farkl\u0131l\u0131klar\u0131 vard\u0131r. PyPy&#039;nin en b\u00fcy\u00fck avantaj\u0131 h\u0131z\u0131d\u0131r. PyPy, CPython&#039;dan \u00e7ok daha h\u0131zl\u0131d\u0131r. Daha sonra PyPy&#039;nin yakla\u015f\u0131k 7 kat daha h\u0131zl\u0131 performans g\u00f6sterdi\u011fi baz\u0131 testler g\u00f6rece\u011fiz. Baz\u0131 durumlarda CPython&#039;dan onlarca hatta y\u00fczlerce kat daha h\u0131zl\u0131 bile olabilir. Peki PyPy bu h\u0131z\u0131 nas\u0131l elde ediyor?<\/p>\n<h5 id=\"%d8%b3%d8%b1%d8%b9%d8%aa\">H\u0131z<\/h5>\n<p>PyPy, Python betiklerini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131rabilen anl\u0131k (JIT) bir derleyici kullan\u0131r. CPython&#039;da kullan\u0131lan derleme t\u00fcr\u00fc, t\u00fcm kodun y\u00fcr\u00fct\u00fclmeden \u00f6nce bayt koduna \u00e7evrildi\u011fi \u00f6nceden derleme (AOT) y\u00f6ntemidir. JIT ise kodu yaln\u0131zca \u00e7al\u0131\u015fma zaman\u0131nda, yaln\u0131zca ihtiya\u00e7 duyuldu\u011funda \u00e7evirir.<\/p>\n<p>Kaynak kod, hi\u00e7 \u00e7al\u0131\u015ft\u0131r\u0131lmayan ancak yine de AOT derleyicisi kullan\u0131larak \u00e7evrilen kod bloklar\u0131 i\u00e7erebilir. Bu da i\u015flem s\u00fcrelerinin yava\u015flamas\u0131na neden olur. Kaynak kod b\u00fcy\u00fck ve binlerce sat\u0131r i\u00e7eriyorsa, JIT kullanmak b\u00fcy\u00fck fark yarat\u0131r. AOT ile t\u00fcm kaynak kod \u00e7evrilir ve bu nedenle \u00e7ok zaman al\u0131r. JIT ile ise yaln\u0131zca kodun gerekli k\u0131s\u0131mlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r, bu da i\u015flemi \u00e7ok daha h\u0131zl\u0131 hale getirir.<\/p>\n<p>PyPy bir kod par\u00e7as\u0131n\u0131 \u00e7evirdikten sonra, bu kod \u00f6nbelle\u011fe al\u0131n\u0131r. Bu, kodun yaln\u0131zca bir kez \u00e7evrildi\u011fi ve \u00e7evirinin daha sonra kullan\u0131ld\u0131\u011f\u0131 anlam\u0131na gelir. CPython yorumlay\u0131c\u0131s\u0131, kod her \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda \u00e7eviriyi tekrarlar; bu da yava\u015f olmas\u0131n\u0131n bir ba\u015fka nedenidir.<\/p>\n<h5 id=\"%d8%a8%db%8c-%d8%b2%d8%ad%d9%85%d8%aa\">Zahmetsiz<\/h5>\n<p>PyPy, Python betiklerinin performans\u0131n\u0131 art\u0131rman\u0131n tek yolu de\u011fil, ancak en kolay yolu. \u00d6rne\u011fin, Cython, C t\u00fcrlerinin de\u011fi\u015fkenlere atanmas\u0131n\u0131 h\u0131zland\u0131rmak i\u00e7in kullan\u0131labilir. Sorun \u015fu ki, Cython geli\u015ftiricinin kaynak kodunu manuel olarak incelemesini ve optimize etmesini gerektiriyor. Bu zahmetli ve kod boyutu artt\u0131k\u00e7a karma\u015f\u0131kl\u0131\u011f\u0131 da art\u0131yor. PyPy kullan\u0131rken ise, herhangi bir \u00e7aba harcamadan normal Python kodunu \u00e7ok daha h\u0131zl\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<h5 id=\"%d8%a8%d8%af%d9%88%d9%86-%d9%be%d8%b4%d8%aa%d9%87\">Y\u0131\u011f\u0131n yok<\/h5>\n<p>Standart Python, C y\u0131\u011f\u0131n\u0131n\u0131 kullan\u0131r. Bu y\u0131\u011f\u0131n, birbirlerinden \u00e7a\u011fr\u0131lan (geri d\u00f6n\u00fc\u015f yapan) fonksiyonlar\u0131n s\u0131ras\u0131n\u0131 saklar. Y\u0131\u011f\u0131n\u0131n boyutu s\u0131n\u0131rl\u0131 oldu\u011fundan, fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131n say\u0131s\u0131 da s\u0131n\u0131rl\u0131d\u0131r.<\/p>\n<p>PyPy, C y\u0131\u011f\u0131n\u0131n\u0131 kullanmayan bir Python uygulamas\u0131 olan Stackless Python&#039;\u0131 kullan\u0131r. Bunun yerine, fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131 nesnelerle birlikte y\u0131\u011f\u0131nda depolar. Y\u0131\u011f\u0131n boyutu, y\u0131\u011f\u0131n boyutundan daha b\u00fcy\u00fckt\u00fcr, bu nedenle daha fazla fonksiyon \u00e7a\u011fr\u0131s\u0131 yapabilirsiniz.<\/p>\n<p>Y\u0131\u011f\u0131ns\u0131z Python, normal Python i\u015f par\u00e7ac\u0131klar\u0131ndan daha iyi olan mikro i\u015f par\u00e7ac\u0131klar\u0131n\u0131 da destekler. Y\u0131\u011f\u0131ns\u0131z bir Python i\u015f par\u00e7ac\u0131\u011f\u0131nda, tek bir i\u015f par\u00e7ac\u0131\u011f\u0131nda \u00e7al\u0131\u015fan &quot;tasklet&quot; ad\u0131 verilen binlerce g\u00f6revi \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p>G\u00f6rev par\u00e7ac\u0131klar\u0131 (tasklet) kullanmak, g\u00f6revlerin e\u015f zamanl\u0131 olarak y\u00fcr\u00fct\u00fclmesine olanak tan\u0131r. E\u015f zamanl\u0131l\u0131k, iki g\u00f6revin ayn\u0131 anda \u00e7al\u0131\u015fmas\u0131 ve ayn\u0131 kaynaklar\u0131 payla\u015fmas\u0131 anlam\u0131na gelir. Bir g\u00f6rev bir s\u00fcre \u00e7al\u0131\u015f\u0131r, ard\u0131ndan ikinci g\u00f6revin \u00e7al\u0131\u015fmas\u0131 i\u00e7in yer a\u00e7mak \u00fczere durur. Bunun, iki ayr\u0131 ancak e\u015f zamanl\u0131 g\u00f6revin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 i\u00e7eren paralellikten farkl\u0131 oldu\u011funu unutmay\u0131n.<\/p>\n<p>Tasklet&#039;lerin kullan\u0131m\u0131, olu\u015fturulan i\u015f par\u00e7ac\u0131\u011f\u0131 say\u0131s\u0131n\u0131 azaltarak i\u015fletim sisteminin t\u00fcm bu i\u015f par\u00e7ac\u0131klar\u0131n\u0131 y\u00f6netme y\u00fck\u00fcn\u00fc d\u00fc\u015f\u00fcr\u00fcr. Sonu\u00e7 olarak, iki i\u015f par\u00e7ac\u0131\u011f\u0131 aras\u0131nda ge\u00e7i\u015f yaparak y\u00fcr\u00fctmeyi h\u0131zland\u0131rmak, iki g\u00f6rev aras\u0131nda ge\u00e7i\u015f yapmaktan daha fazla zaman al\u0131r.<\/p>\n<p>Stackless Python kullan\u0131m\u0131, devaml\u0131l\u0131k (continuations) \u00f6zelli\u011finin de \u00f6n\u00fcn\u00fc a\u00e7t\u0131. Devaml\u0131l\u0131k, bir g\u00f6revin durumunu kaydetmemize ve daha sonra g\u00f6reve devam etmek i\u00e7in geri y\u00fcklememize olanak tan\u0131r. Stackless Python&#039;\u0131n standart Python&#039;dan farkl\u0131 olmad\u0131\u011f\u0131n\u0131, sadece daha fazla i\u015flevsellik ekledi\u011fini unutmay\u0131n. Standart Python&#039;da bulunan her \u015fey Stackless Python&#039;da da mevcuttur.<\/p>\n<p>PyPy&#039;nin faydalar\u0131n\u0131 ele ald\u0131ktan sonra, bir sonraki b\u00f6l\u00fcmde s\u0131n\u0131rlamalar\u0131ndan bahsedelim.<\/p>\n<h2 id=\"%d9%85%d8%ad%d8%af%d9%88%d8%af%db%8c%d8%aa-%d9%87%d8%a7%db%8c-pypy\">PyPy&#039;nin s\u0131n\u0131rlamalar\u0131<\/h2>\n<p>CPython&#039;\u0131 herhangi bir makinede ve herhangi bir i\u015flemci mimarisinde kullanabilirsiniz, ancak PyPy&#039;nin deste\u011fi nispeten s\u0131n\u0131rl\u0131d\u0131r.<\/p>\n<p>\u0130\u015fte PyPy taraf\u0131ndan desteklenen ve s\u00fcrd\u00fcr\u00fclen CPU mimarileri (kaynak):<\/p>\n<ul>\n<li>x86 (IA-32) ve x86_64<\/li>\n<li>ARM platformlar\u0131 (ARMv6 veya ARMv7, VFPv3 ile)<\/li>\n<li>AArch64<\/li>\n<li>PowerPC 64 bit, hem k\u00fc\u00e7\u00fck hem de b\u00fcy\u00fck endian<\/li>\n<li>Sistem Z (s390x)<\/li>\n<\/ul>\n<p>PyPy t\u00fcm Linux da\u011f\u0131t\u0131mlar\u0131nda \u00e7al\u0131\u015fmaz, bu nedenle desteklenen da\u011f\u0131t\u0131mlardan birini kulland\u0131\u011f\u0131n\u0131zdan emin olmal\u0131s\u0131n\u0131z. Desteklenmeyen bir da\u011f\u0131t\u0131mda PyPy Linux ikili dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak hata verecektir. PyPy yaln\u0131zca Python 2 ve Python 3&#039;\u00fcn bir s\u00fcr\u00fcm\u00fcn\u00fc destekler; bunlar PyPy 2.7 ve PyPy 3.6&#039;d\u0131r.<\/p>\n<p>PyPy&#039;de \u00e7al\u0131\u015fan kod tamamen Python ise, PyPy&#039;nin sa\u011flad\u0131\u011f\u0131 h\u0131z art\u0131\u015f\u0131 genellikle \u00f6nemli olur. Ancak, kod NumPy gibi C uzant\u0131lar\u0131 i\u00e7eriyorsa, PyPy asl\u0131nda s\u00fcreyi art\u0131rabilir. PyPy projesi aktif olarak geli\u015ftirilmektedir ve bu nedenle gelecekte C uzant\u0131lar\u0131 i\u00e7in daha iyi destek sa\u011flayabilir.<\/p>\n<p>PyPy, Kivy gibi bir\u00e7ok pop\u00fcler Python \u00e7er\u00e7evesi taraf\u0131ndan desteklenmemektedir. Kivy, CPython&#039;\u0131n Android ve iOS dahil t\u00fcm platformlarda \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r. Bu da PyPy&#039;nin mobil cihazlarda \u00e7al\u0131\u015famayaca\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>PyPy&#039;nin avantajlar\u0131n\u0131 ve s\u0131n\u0131rlamalar\u0131n\u0131 g\u00f6rd\u00fc\u011f\u00fcm\u00fcze g\u00f6re, \u015fimdi PyPy&#039;yi Ubuntu&#039;da nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z\u0131 a\u00e7\u0131klayal\u0131m.<\/p>\n<h2 id=\"%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-pypy-%d8%af%d8%b1-%d8%a7%d9%88%d8%a8%d9%88%d9%86%d8%aa%d9%88\">Ubuntu \u00fczerinde PyPy \u00e7al\u0131\u015ft\u0131rmak<\/h2>\n<p>PyPy&#039;yi Mac, Linux veya Windows&#039;ta \u00e7al\u0131\u015ft\u0131rabilirsiniz, ancak biz Ubuntu&#039;da \u00e7al\u0131\u015ft\u0131rmay\u0131 ele alaca\u011f\u0131z. PyPy Linux ikili dosyalar\u0131n\u0131n yaln\u0131zca belirli Linux da\u011f\u0131t\u0131mlar\u0131nda desteklendi\u011fini belirtmek \u00f6nemlidir. Mevcut PyPy ikili dosyalar\u0131n\u0131 ve desteklenen da\u011f\u0131t\u0131mlar\u0131n\u0131 bu sayfada inceleyebilirsiniz. \u00d6rne\u011fin, PyPy (veya Python 2.7 veya Python 3.6) yaln\u0131zca \u00fc\u00e7 Ubuntu s\u00fcr\u00fcm\u00fc i\u00e7in desteklenmektedir: 18.04, 16.04 ve 14.04. Bu tarih itibariyle en son Ubuntu s\u00fcr\u00fcm\u00fcne (19.10) sahipseniz, PyPy&#039;yi \u00e7al\u0131\u015ft\u0131ramazs\u0131n\u0131z. Desteklenmeyen bir da\u011f\u0131t\u0131mda PyPy \u00e7al\u0131\u015ft\u0131rmay\u0131 denemek \u015fu hatay\u0131 verecektir:<\/p>\n<p>PyPy ikili dosyalar\u0131 s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyalar olarak gelir. Tek yapman\u0131z gereken indirdi\u011finiz dosyay\u0131 a\u00e7mak. S\u0131k\u0131\u015ft\u0131r\u0131lmam\u0131\u015f klas\u00f6r\u00fcn i\u00e7inde, PyPy \u00e7al\u0131\u015ft\u0131r\u0131labilir dosyas\u0131n\u0131n bulundu\u011fu &quot;bin&quot; adl\u0131 bir klas\u00f6r vard\u0131r. Ben Python 3.6 kullan\u0131yorum, bu nedenle dosya ad\u0131 pypy3. Python 2.7 i\u00e7in ise sadece pypy olarak adland\u0131r\u0131l\u0131yor.<\/p>\n<p>CPython i\u00e7in, terminalden Python 3 \u00e7al\u0131\u015ft\u0131rmak istiyorsan\u0131z, `python3` komutunu girmeniz yeterlidir. PyPy&#039;yi \u00e7al\u0131\u015ft\u0131rmak i\u00e7in ise `pypy3` komutunu vermeniz yeterlidir.<\/p>\n<p>A\u015fa\u011f\u0131daki \u015fekilde g\u00f6sterildi\u011fi gibi, terminale `pypy3` komutunu girdi\u011finizde &#039;pypy3&#039; bulunamad\u0131&#039; mesaj\u0131 alabilirsiniz. Bunun nedeni, PyPy yolunun PATH ortam de\u011fi\u015fkenine eklenmemi\u015f olmas\u0131d\u0131r. Terminaldeki ge\u00e7erli yolun PyPy bin dizini i\u00e7inde olmas\u0131 ko\u015fuluyla, asl\u0131nda \u00e7al\u0131\u015fan komut `.\/pypy3`&#039;t\u00fcr. Nokta (.) ge\u00e7erli dizini ifade eder ve `\/` i\u015fareti ge\u00e7erli dizindeki bir \u015feye eri\u015fmek i\u00e7in eklenir. `.\/pypy3` komutunu vermek Python&#039;u ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"734\"  height=\"298\"  class=\"aligncenter wp-image-16215 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 734px) 100vw, 734px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1.png 734w, https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1-300x122.png 300w, https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1-110x45.png 110w, https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1-200x81.png 200w, https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1-380x154.png 380w, https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1-255x104.png 255w, https:\/\/cdn.itpiran.net\/2024\/10\/10200135\/2-1-550x223.png 550w\" ><\/p>\n<p>Art\u0131k PyPy&#039;nin avantajlar\u0131ndan yararlanarak Python ile her zamanki gibi \u00e7al\u0131\u015fabilirsiniz. \u00d6rne\u011fin, 1000 say\u0131y\u0131 toplayan basit bir Python beti\u011fi olu\u015fturabilir ve bunu PyPy kullanarak \u00e7al\u0131\u015ft\u0131rabiliriz. Kod \u015fu \u015fekildedir:.<\/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>nums = range(1000)\r\nsum = 0\r\nfor k in nums:\r\nsum = sum + k\r\nprint(\"Sum of 1,000 numbers is : \", sum)<\/code><\/pre>\n<\/div>\n<p>E\u011fer bu betik test.py olarak adland\u0131r\u0131lm\u0131\u015fsa, a\u015fa\u011f\u0131daki komutu kullanarak \u00e7al\u0131\u015ft\u0131rabilirsiniz (Python dosyas\u0131n\u0131n PyPy bin klas\u00f6r\u00fcnde bulundu\u011funu varsayarsak, bu konum pypy3 komutuyla ayn\u0131d\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>.\/pypy3 test.py\r\n<\/code><\/pre>\n<\/div>\n<p>Bir sonraki \u015fekil, \u00f6nceki kodun y\u00fcr\u00fct\u00fclmesinin sonucunu g\u00f6stermektedir.<\/p>\n<p><img  loading=\"lazy\"  decoding=\"async\"  src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAP+KeNJXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\"  alt=\"\"  width=\"736\"  height=\"131\"  class=\"aligncenter wp-image-16216 size-full pk-lazyload\"  data-pk-sizes=\"auto\"  data-ls-sizes=\"auto, (max-width: 736px) 100vw, 736px\"  data-pk-src=\"https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1.png\"  data-pk-srcset=\"https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1.png 736w, https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1-300x53.png 300w, https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1-110x20.png 110w, https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1-200x36.png 200w, https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1-380x68.png 380w, https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1-255x45.png 255w, https:\/\/cdn.itpiran.net\/2024\/10\/10200552\/3-1-550x98.png 550w\" ><\/p>\n<h2 id=\"%d8%b2%d9%85%d8%a7%d9%86-%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-pypy-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-cpython\">PyPy ve CPython \u00e7al\u0131\u015fma zaman\u0131 kar\u015f\u0131la\u015ft\u0131rmas\u0131<\/h2>\n<p>1000 say\u0131n\u0131n toplam\u0131n\u0131 hesaplamak i\u00e7in PyPy ve CPython&#039;\u0131n \u00e7al\u0131\u015fma s\u00fcrelerini kar\u015f\u0131la\u015ft\u0131rmak amac\u0131yla, s\u00fcre \u00f6l\u00e7\u00fcm\u00fc i\u00e7in kullan\u0131lan kod a\u015fa\u011f\u0131daki gibi de\u011fi\u015fmektedir.<\/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\nnums = range(1000)\r\nsum = 0\r\nfor k in nums:\r\nsum = sum + k\r\nprint(\"Sum of 1,000 numbers is : \", sum)\r\nt2 = time.time()\r\nt = t2 - t1\r\nprint(\"Elapsed time is : \", t, \" seconds\")<\/code><\/pre>\n<\/div>\n<p>PyPy i\u00e7in s\u00fcre 0,00045 saniyeye yak\u0131nken, CPython i\u00e7in bu s\u00fcre 0,0002 saniyedir (kodu 2,5 GHz h\u0131z\u0131nda \u00e7al\u0131\u015fan Core i7-6500U i\u015flemcili bilgisayar\u0131mda \u00e7al\u0131\u015ft\u0131rd\u0131m). Bu durumda CPython, PyPy&#039;den daha az zaman al\u0131yor ki bu da beklenen bir durum \u00e7\u00fcnk\u00fc bu ger\u00e7ekten uzun s\u00fcren bir i\u015flem de\u011fil. E\u011fer kod 1000 yerine 1 milyon say\u0131y\u0131 toplayacak olsayd\u0131, PyPy sonunda kazan\u0131rd\u0131. Bu durumda PyPy i\u00e7in 0,00035 saniye, CPython i\u00e7in ise 0,1 saniye s\u00fcrerdi. PyPy&#039;nin avantaj\u0131 art\u0131k a\u00e7\u0131k\u00e7a ortada. Bu, CPython&#039;un uzun s\u00fcren i\u015flemler i\u00e7in ne kadar daha yava\u015f oldu\u011fu konusunda size bir fikir vermelidir.<\/p>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Sonu\u00e7<\/h2>\n<p>Bu e\u011fitimde, en h\u0131zl\u0131 Python uygulamas\u0131 olan PyPy tan\u0131t\u0131lmaktad\u0131r. PyPy&#039;nin en b\u00fcy\u00fck avantaj\u0131, derlenmi\u015f makine kodunu yeniden \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 \u00f6nlemek i\u00e7in \u00f6nbelle\u011fe alan anl\u0131k derleme (JIT) \u00f6zelli\u011fidir. PyPy&#039;nin s\u0131n\u0131rlamalar\u0131 da vurgulanmaktad\u0131r; en \u00f6nemlisi, saf Python kodu i\u00e7in iyi \u00e7al\u0131\u015fmas\u0131 ancak C uzant\u0131lar\u0131 i\u00e7in verimli olmamas\u0131d\u0131r.<\/p>\n<p>Ayr\u0131ca PyPy&#039;nin Ubuntu&#039;da nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fck ve hem CPython hem de PyPy&#039;nin y\u00fcr\u00fctme s\u00fcrelerini kar\u015f\u0131la\u015ft\u0131rarak, uzun s\u00fcren g\u00f6revlerde PyPy&#039;nin performans\u0131n\u0131 vurgulad\u0131k. Bununla birlikte, CPython k\u0131sa s\u00fcren g\u00f6revlerde PyPy&#039;yi hala geride b\u0131rakabilir. Gelecek yaz\u0131lar\u0131m\u0131zda PyPy, CPython ve Cython aras\u0131ndaki kar\u015f\u0131la\u015ft\u0131rmalar\u0131 daha detayl\u0131 inceleyece\u011fiz.<\/p>","protected":false},"excerpt":{"rendered":"Giri\u015f Python programlama dili \u00e7e\u015fitli \u015fekillerde uygulanabilen bir aray\u00fczd\u00fcr.","protected":false},"author":1,"featured_media":16212,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy","_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":[435,376],"class_list":{"0":"post-16211","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-programming","9":"tag-programming","10":"tag-python"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy - \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\/getting-started-with-pypy\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u0648\u062f.&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/getting-started-with-pypy\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-10T16:39:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/10\/10195153\/PYPY-wallpaper.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=\"1 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\\\/getting-started-with-pypy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy\",\"datePublished\":\"2024-10-10T16:39:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/\"},\"wordCount\":187,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/10\\\/10195153\\\/PYPY-wallpaper.jpg\",\"keywords\":[\"programming\",\"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\\\/getting-started-with-pypy\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/\",\"name\":\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/10\\\/10195153\\\/PYPY-wallpaper.jpg\",\"datePublished\":\"2024-10-10T16:39:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/10\\\/10195153\\\/PYPY-wallpaper.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/10\\\/10195153\\\/PYPY-wallpaper.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/getting-started-with-pypy\\\/#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\":\"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy\"}]},{\"@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":"PyPy ile Ba\u015flang\u0131\u00e7 - ITPiran Blogu","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\/getting-started-with-pypy\/","og_locale":"tr_TR","og_type":"article","og_title":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 \u0632\u0628\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0634\u0648\u062f.&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/tr\/tutorials\/getting-started-with-pypy\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-10-10T16:39:25+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/10\/10195153\/PYPY-wallpaper.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"admin","Tahmini okuma s\u00fcresi":"1 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy","datePublished":"2024-10-10T16:39:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/"},"wordCount":187,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/10\/10195153\/PYPY-wallpaper.jpg","keywords":["programming","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\/getting-started-with-pypy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/","name":"PyPy ile Ba\u015flang\u0131\u00e7 - ITPiran Blogu","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/10\/10195153\/PYPY-wallpaper.jpg","datePublished":"2024-10-10T16:39:25+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/10\/10195153\/PYPY-wallpaper.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/10\/10195153\/PYPY-wallpaper.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/getting-started-with-pypy\/#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":"\u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 PyPy"}]},{"@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\/16211","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=16211"}],"version-history":[{"count":2,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/16211\/revisions"}],"predecessor-version":[{"id":16217,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/posts\/16211\/revisions\/16217"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media\/16212"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/media?parent=16211"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/categories?post=16211"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/tr\/wp-json\/wp\/v2\/tags?post=16211"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}