{"id":5827,"date":"2022-07-04T17:44:00","date_gmt":"2022-07-04T16:44:00","guid":{"rendered":"https:\/\/www.itkommando.hu\/site\/?page_id=5827"},"modified":"2022-07-05T09:34:53","modified_gmt":"2022-07-05T08:34:53","slug":"egy-python-program-sikeres-optimalizalasa","status":"publish","type":"page","link":"https:\/\/www.itkommando.hu\/site\/a_halozat_szolgalataban\/tanulmanyok\/egy-python-program-sikeres-optimalizalasa\/","title":{"rendered":"Egy Python program sikeres optimaliz\u00e1l\u00e1sa"},"content":{"rendered":"\n<p>Egy kedves tanul\u00f3 bar\u00e1tom megkeresett, hogy a <a href=\"https:\/\/www.itkommando.hu\/site\/a_halozat_szolgalataban\/tanulmanyok\/python-programozasi-nyelv-elso-resz\/\" title=\"Python 1. r\u00e9sz (\u00c1ltal\u00e1nos bemutat\u00e1s)\">python<\/a> programj\u00e1t \u00edrjam \u00e1t valami compileres nyelvre, mert nagyon lass\u00fa. A program a tanulm\u00e1nyi szintj\u00e9nek teljesen megfelel, de kiv\u00e1l\u00f3 \u00fcr\u00fcgy, hogy az optimaliz\u00e1l\u00e1sr\u00f3l p\u00e1r sz\u00f3t ejts\u00fcnk, mivel egy <a href=\"https:\/\/hu.wikipedia.org\/wiki\/Naiv_algoritmus\" target=\"_blank\" rel=\"noreferrer noopener\">naiv algoritmust<\/a> haszn\u00e1lt, az algoritmus optimaliz\u00e1l\u00e1s\u00e1val jelent\u0151s eredm\u00e9nyeket lehet le\u00e9rni. <img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"43\" class=\"wp-image-5769\" style=\"width: 150px;\" src=\"https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python.png\" alt=\"Python logo\" srcset=\"https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python.png 2982w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-300x86.png 300w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-1024x295.png 1024w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-768x221.png 768w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-1536x442.png 1536w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-2048x589.png 2048w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-825x237.png 825w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-1920x552.png 1920w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-600x173.png 600w, https:\/\/www.itkommando.hu\/site\/wp-content\/uploads\/python-400x115.png 400w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/p>\n\n\n\n<p>A programk\u00f3dokban az el\u0151z\u0151 verzi\u00f3hoz k\u00e9pest t\u00f6rt\u00e9nt v\u00e1ltoz\u00e1sokat f\u00e9lk\u00f6v\u00e9r szed\u00e9ssel jeleztem.<\/p>\n\n\n\n<p>Na n\u00e9zz\u00fck a programot:<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-color has-black-background-color has-text-color has-background\"><code>primes=&#91;2,3,5,7]\ndef IsPrime(num):\n    eredm=True\n    for i in primes:\n        if num%i==0:\n            eredm=False\n    return eredm\nfor num in range(primes&#91;-1],30000,2):\n    if IsPrime(num):\n        primes.append(num)\nprint(len(primes))\n<\/code><\/pre>\n\n\n\n<p>Nagyon j\u00f3, de a programot azonnal visszadobtam. Nincsenek benne megjegyz\u00e9sek, amik seg\u00edten\u00e9k a k\u00f3dban val\u00f3 eligazod\u00e1st.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-color has-black-background-color has-text-color has-background\"><code><strong>#### Pr\u00edmsz\u00e1m keres\u0151 program ####\n\n# K\u00e9sz\u00edtette Gipsz Jakab \n# A program korl\u00e1toz\u00e1sok n\u00e9lk\u00fcl szabadon felhaszn\u00e1lhat\u00f3 \n\n# Indul\u00e1snak megadunk n\u00e9h\u00e1ny pr\u00edmet egy list\u00e1ban<\/strong>\nprimes=&#91;2,3,5,7]\n\ndef IsPrime(num):\n#Az argumentumban megadott num integert elosztjuk minden\n#ismert pr\u00edmmel. Ha egyikkel sem oszthat\u00f3, akkor True, \n#egy\u00e9bk\u00e9nt False \u00e9rt\u00e9ket adunk vissza\n    eredm=True\n    for i in primes:\n        if num%i==0:\n            eredm=False\n    return eredm\n\n<strong># A f\u0151program.\n# A legnagyobb ismert pr\u00edm+2-t\u0151l 30 000-ig minden p\u00e1ratlan sz\u00e1mot megn\u00e9z\u00fcnk <\/strong>\nfor num in range(primes&#91;-1]+2,30000,2):\n    #Ha a sz\u00e1m pr\u00edm, hozz\u00e1 adjuk az ismert pr\u00edmek list\u00e1j\u00e1hoz\n    if IsPrime(num):\n        primes.append(num)\nprint(len(primes))\n<\/code><\/pre>\n\n\n\n<p>\u00cdgy m\u00e1r jobban n\u00e9z ki, \u00e9s a program m\u00f6g\u00f6tti elk\u00e9pzel\u00e9sekr\u0151l is van egy kis k\u00e9p\u00fcnk.<\/p>\n\n\n\n<p>Tegy\u00fcnk bele egy id\u0151 m\u00e9r\u00e9st, hogy mit jelent a &#8222;lass\u00fa&#8221;, mivel az SI m\u00e9rt\u00e9kegys\u00e9gek k\u00f6z\u00f6tt ilyet nem tal\u00e1ltam:<\/p>\n\n\n\n<p>Az id\u0151 m\u00e9r\u00e9s\u00e9hez sz\u00fcks\u00e9g van a <code>datetime<\/code> modulra, ami tartalmazza  a now() f\u00fcggv\u00e9nyt, ami az aktu\u00e1lis pontos id\u0151t adja vissza.<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-color has-black-background-color has-text-color has-background\"><code>#### Pr\u00edmsz\u00e1m keres\u0151 program ####\n\n# K\u00e9sz\u00edtette Gipsz Jakab \n# A program korl\u00e1toz\u00e1sok n\u00e9lk\u00fcl szabadon felhaszn\u00e1lhat\u00f3 \n\n\n# Az id\u0151m\u00e9r\u00e9shez bet\u00f6ltj\u00fck a datetime modult\n<strong>from datetime import datetime\n<\/strong>\n# Indul\u00e1snak megadunk n\u00e9h\u00e1ny pr\u00edmet egy list\u00e1ban\nprimes=&#91;2,3,5,7]\n\ndef IsPrime(num):\n#Az argumentumban megadott num integert elosztjuk minden\n#ismert pr\u00edmmel. Ha egyikkel sem oszthat\u00f3, akkor True, \n#eg\u00e9bk\u00e9nt False \u00e9rt\u00e9ket adunk vissza\n    eredm=True\n    for i in primes:\n        if num%i==0:\n            eredm=False\n    return eredm\n\n## A f\u0151program.\n<strong># El\u0151sz\u00f6r progstart v\u00e1ltoz\u00f3ban r\u00f6gz\u00edtj\u00fck a program indul\u00e1s\u00e1nak id\u0151potj\u00e1t\nprogstart=now = datetime.now()<\/strong>\n# A legnagyobb ismert pr\u00edm+2-t\u0151l 30 000-ig minden p\u00e1ratlan sz\u00e1mot megn\u00e9z\u00fcnk \nfor num in range(primes&#91;-1]+2,30000,2):\n    #Ha a sz\u00e1m pr\u00edm, hozz\u00e1 adjuk az ismert pr\u00edmek list\u00e1j\u00e1hoz\n    if IsPrime(num):\n        primes.append(num)\n<strong>#R\u00f6gz\u00edtj\u00fck, hogy mikor \u00e9rt v\u00e9get a program\nprogend=datetime.now()<\/strong>\n#Ki\u00edrjuk h\u00e1ny pr\u00edmet tal\u00e1ltunk\nprint(len(primes))\n<strong>print('Fut\u00e1sid\u0151:',progend-progstart)<\/strong>\n<\/code><\/pre>\n\n\n\n<p>Az \u00e9n g\u00e9pemen futtatva ez a verzi\u00f3 olyan 26 m\u00e1sodperc alatt futott le<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A tesztel\u00e9shez haszn\u00e1lt g\u00e9p<\/h2>\n\n\n\n<p>A tesztel\u00e9shez az \u00e9n asztali g\u00e9pemet haszn\u00e1ltuk.<\/p>\n\n\n\n<p>CPU: Intel(R) Xeon(R) CPU E5-2643 v2 (6 mag 12 sz\u00e1l)<br>Mem\u00f3ria: 32 GB<br>H\u00e1tt\u00e9rt\u00e1r: SSD<\/p>\n\n\n\n<p>Windows 10 64 bit<\/p>\n\n\n\n<p>A program a 12 sz\u00e1lb\u00f3l egyet haszn\u00e1l<\/p>\n\n\n\n<p>A sz\u00e1m\u00edt\u00f3g\u00e9p olyan \u00e1llapotban van, ahogy haszn\u00e1lni szoktam. Egy pontosabb m\u00e9r\u00e9shez frissen telep\u00edtett Windowsra lenne sz\u00fcks\u00e9g, az adott esetben azonban nem finom \u00f6sszehasonl\u00edt\u00e1st v\u00e9gz\u00fcnk. Itt a nagy l\u00e9pt\u00e9k\u0171 v\u00e1ltoz\u00e1sok \u00e9rdekelnek.<br>Minden program verzi\u00f3t n\u00e9gy alkalommal futtatok le. A legnagyobb \u00e9s legkisebb \u00e9rt\u00e9ket eldobom, a k\u00e9t k\u00f6z\u00e9ps\u0151 \u00e1tlag\u00e1t adom meg. (A m\u00e9r\u00e9si tapasztalat, hogy a n\u00e9gy futtat\u00e1s ideje alig t\u00e9r el)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kezdj\u00fck el az \u00e9szszer\u0171s\u00edt\u00e9st<\/h2>\n\n\n\n<p>A Python nem a sebess\u00e9g\u00e9r\u0151l h\u00edres, els\u0151sorban arra tal\u00e1lt\u00e1k ki, hogy a program gyorsan elk\u00e9sz\u00edthet\u0151 legyen,  program fut\u00e1si ideje is ennek van al\u00e1rendelve. Ebben a programban azonban b\u0151ven van tere az optimaliz\u00e1l\u00e1snak. Els\u0151 l\u00e9p\u00e9sben cs\u00f6kkents\u00fck a felesleges oszt\u00e1sok sz\u00e1m\u00e1t az IsPrime f\u00fcggv\u00e9nyben. Ha egy sz\u00e1mr\u00f3l kider\u00fcl, hogy oszthat\u00f3 valamelyik pr\u00edmmel, azonnal kil\u00e9p\u00fcnk a ciklusb\u00f3l is .<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-color has-black-background-color has-text-color has-background\"><code>#### Pr\u00edmsz\u00e1m keres\u0151 program ####\n\n# K\u00e9sz\u00edtette Gipsz Jakab \n# A program korl\u00e1toz\u00e1sok n\u00e9lk\u00fcl szabadon felhaszn\u00e1lhat\u00f3 \n\n\n# Az id\u0151m\u00e9r\u00e9shez bet\u00f6ltj\u00fck a datetime modult\nfrom datetime import datetime\n\n# Indul\u00e1snak megadunk n\u00e9h\u00e1ny pr\u00edmet egy list\u00e1ban\nprimes=&#91;2,3,5,7]\n\ndef IsPrime(num):\n#Az argumentumban megadott num integert elosztjuk minden\n#ismert pr\u00edmmel. Ha egyikkel sem oszthat\u00f3, akkor True, \n#eg\u00e9bk\u00e9nt False \u00e9rt\u00e9ket adunk vissza\n#Ha a sz\u00e1m nem pr\u00edm, kil\u00e9p a ciklusb\u00f3l\n    eredm=True\n    for i in primes:\n        if num%i==0:           \n            eredm=False\n            <strong>break     #Azonnal kil\u00e9p a ciklusb\u00f3l<\/strong>   \n    return eredm\n\n# A f\u0151program.\n# A legnagyobb ismert pr\u00edm+2-t\u0151l 30 000-ig minden p\u00e1ratlan sz\u00e1mot megn\u00e9z\u00fcnk \nprogstart=now = datetime.now()\nfor num in range(primes&#91;-1]+2,30000,2):\n    #Ha a sz\u00e1m pr\u00edm, hozz\u00e1 adjuk az ismert pr\u00edmek list\u00e1j\u00e1hoz\n    if IsPrime(num):\n        primes.append(num)\nprogend=datetime.now()\nprint(len(primes))\nprint('Fut\u00e1sid\u0151:',progend-progstart)<\/code><\/pre>\n\n\n\n<p>Ez a program 3,6 m\u00e1sodperc alatt futott le. Ez m\u00e1r jelent\u0151s gyorsul\u00e1s<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cs\u00f6kkents\u00fck tov\u00e1bb az oszt\u00e1sok sz\u00e1m\u00e1t<\/h2>\n\n\n\n<p>A m\u00e1sodik felt\u00e9tel kev\u00e9sb\u00e9 trivi\u00e1lis, de k\u00f6nny\u0171 bel\u00e1tni, hogy a sz\u00e1m n\u00e9gyzetgy\u00f6k\u00e9n\u00e9l nagyobb sz\u00e1mokat biztos, hogy a n\u00e9gyzetgy\u00f6kn\u00e9l kisebb sz\u00e1mmal kell megszorozni, hogy az eredeti sz\u00e1mot kapjuk. Ha a n\u00e9gyzetgy\u00f6k \u00e9rt\u00e9k\u00e9t el\u00e9rt\u00fck, akkor m\u00e1r az \u00f6sszes ann\u00e1l kisebb sz\u00e1mmal pr\u00f3b\u00e1lkoztunk.<br>A n\u00e9gyzetgy\u00f6kvon\u00e1st a <code>math<\/code> modul tartalmazza.<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-color has-black-background-color has-text-color has-background\"><code>#### Pr\u00edmsz\u00e1m keres\u0151 program ####\n\n# K\u00e9sz\u00edtette Gipsz Jakab \n# A program korl\u00e1toz\u00e1sok n\u00e9lk\u00fcl szabadon felhaszn\u00e1lhat\u00f3 \n\n\n# Az id\u0151m\u00e9r\u00e9shez bet\u00f6ltj\u00fck a datetime modult\nfrom datetime import datetime\n\n# A n\u00e9gyzetgy\u00f6k von\u00e1shoz sz\u00fcks\u00e9g lesz a math modulra\n<strong>import math<\/strong>\n\n# Indul\u00e1snak megadunk n\u00e9h\u00e1ny pr\u00edmet egy list\u00e1ban\nprimes=&#91;2,3,5,7]\n\ndef IsPrime(num):\n#Az argumentumban megadott num integert elosztjuk minden\n#ismert pr\u00edmmel. Ha egyikkel sem oszthat\u00f3, akkor True, \n#eg\u00e9bk\u00e9nt False \u00e9rt\u00e9ket adunk vissza\n#Ha a sz\u00e1m nem pr\u00edm, kil\u00e9p a ciklusb\u00f3l\n    eredm=True\n    <strong>vege=int(math.sqrt(num)+1)<\/strong>\n    for i in primes:\n        if num%i==0:           \n            eredm=False\n            break\n        <strong>if i&gt;vege:\n           break<\/strong>\n    return eredm\n\n# A f\u0151program.\n# A legnagyobb ismert pr\u00edm+2-t\u0151l 30 000-ig minden p\u00e1ratlan sz\u00e1mot megn\u00e9z\u00fcnk \nprogstart=now = datetime.now()\nfor num in range(primes&#91;-1]+2,30000,2):\n    #Ha a sz\u00e1m pr\u00edm, hozz\u00e1 adjuk az ismert pr\u00edmek list\u00e1j\u00e1hoz\n    if IsPrime(num):\n        primes.append(num)\nprogend=datetime.now()\nprint(len(primes))\nprint('Fut\u00e1sid\u0151:',progend-progstart)<\/code><\/pre>\n\n\n\n<p>Siker\u00fclt jelent\u0151s teljes\u00edtm\u00e9ny n\u00f6veked\u00e9st el\u00e9rni, a program 0,28 m\u00e1sodperc alatt futott le. Ez jelent\u0151s javul\u00e1s. Ak\u00e1rhogy is n\u00e9zz\u00fck, a fut\u00e1sid\u0151t k\u00f6zel az 1%-\u00e1ra cs\u00f6kkentett\u00fck.<\/p>\n\n\n\n<p>A program fut\u00e1sa tov\u00e1bb gyors\u00edthat\u00f3  numpy modul \u00e9s a jit (just in time compiler) haszn\u00e1lat\u00e1val. Tov\u00e1bbi lehet\u0151s\u00e9g (k\u00fcl\u00f6n\u00f6sen ilyen sok sz\u00e1las g\u00e9p eset\u00e9n) lehet haszn\u00e1lni a multiprocessing modult, ami lehet\u0151v\u00e9 teszi egyes programr\u00e9szek p\u00e1rhuzamos v\u00e9grehajt\u00e1s\u00e1t.<\/p>\n\n\n\n<p>Ezek azonban m\u00e1r er\u0151sen nyelv f\u00fcgg\u0151 dolgok, nem ennek a cikknek  t\u00e9m\u00e1ja.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">N\u00e9zz\u00fck meg Freepascal haszn\u00e1lat\u00e1val<\/h2>\n\n\n\n<p>Az\u00e9rt nem csak a p\u00e1ratlan sz\u00e1mokat n\u00e9zem v\u00e9gig, mert a Pascal nem ismeri a for ciklusban a step kieg\u00e9sz\u00edt\u00e9st, term\u00e9szetesen van r\u00e1 megold\u00e1s, de a feladat nem indokolta. A program egy\u00e9bk\u00e9n nagy vonalakban megfelel a kiindul\u00e1si programnak.<br>A program l\u00e1that\u00f3an sokkal t\u00f6bb programsorb\u00f3l \u00e1ll, mivel a programnyelv megk\u00f6veteli, hogy a v\u00e1ltoz\u00f3kat haszn\u00e1lat el\u0151tt deklar\u00e1luk (a var szakasz). Ugyan ezt meg kell ism\u00e9telni a f\u00fcggv\u00e9nyeken bel\u00fcl is.<\/p>\n\n\n\n<p>Mivel a program nem interpreteres, hanem compileres (a forr\u00e1ssz\u00f6vegb\u0151l k\u00fcl\u00f6n l\u00e9p\u00e9sben kell futtathat\u00f3 programot l\u00e9trehozni) az elk\u00e9sz\u00fclt program fut\u00e1sa gyorsabb, illetve az el\u0151re defini\u00e1lt v\u00e1ltoz\u00f3k seg\u00edtik a hibakeres\u00e9st.<\/p>\n\n\n\n<pre class=\"wp-block-code has-luminous-vivid-amber-color has-black-background-color has-text-color has-background\"><code>\/\/ Pr\u00edmsz\u00e1m rost\u00e1l\u00f3 program a Python program optimaliz\u00e1l\u00e1sr\u00f3l sz\u00f3l\u00f3 cikkhez\n\/\/Bemutat\u00f3 program, szabadon felhaszn\u00e1lhat\u00f3\n\/\/K\u00e9sz\u00edtette Szigetv\u00e1ri Zolt\u00e1n\n\n\/\/A sysutil \u00e1s DateUtils modulok az id\u0151 m\u00e9r\u00e9s\u00e9hez sz\u00fcks\u00e9gesek\nuses sysutils, DateUtils;\n\nconst\n\/\/A maxim\u00e1lis vizsg\u00e1lt sz\u00e1m\n max=30000;\n\nvar\n\/\/A pythonnal ellent\u00e9tben itt el\u0151re meg kell adni a v\u00e1ltoz\u00f3k t\u00edpus\u00e1t.\n\/\/A primes nev\u0171 t\u00f6mbben t\u00e1roljuk az eredm\u00e9nyt. Mivel mem\u00f3ri\u00e1nk van b\u0151ven, akkora helyet foglalunk, mintha a minden sz\u00e1m pr\u00edm lenne\n primes:array&#91;0..max] of longint;\n\/\/A szam  a ciklusv\u00e1ltoz\u00f3\n szam:longint;\n\/\/Index-ben t\u00e1roljuk a megtal\u00e1lt pr\u00edmek sorsz\u00e1m\u00e1t 0-t\u00f3l sz\u00e1molva\n index:integer;\n\/\/A program indul\u00e1s\u00e1nak id\u0151pontja\n progstart:TDateTime;\n\n\n\/\/Az IsPrime f\u00fcggv\u00e9ny minden egyes m\u00e1r megtal\u00e1lt pr\u00edmmel elosztjuk a vizsg\u00e1lt sz\u00e1mot. Ha a marad\u00e9k nulla (a sz\u00e1m oszthat\u00f3), a f\u00fcggv\u00e9ny false \u00e9rt\u00e9kkel t\u00e9r vissza\n function IsPrime(num:QWord;darab:Word):boolean;\n var\n   szam: integer;\n   eredm:boolean;\n begin\n   eredm:=True;\n   for szam:=0 to darab do\n     begin\n       if num mod primes&#91;szam]=0 then\n         begin\n           eredm:=false;\n          end;\n       IsPrime:=eredm;\n     end;\n end;\nBegin\n primes&#91;0]:=2;\n primes&#91;1]:=3;\n primes&#91;2]:=5;\n primes&#91;3]:=7;\n index:=3;\n progstart:=Now;\n for szam:=11 to max do\n   begin\n    if IsPrime(szam,index) then\n      begin\n        index:=index+1;\n        primes&#91;index]:=szam;\n      end;\n   end;\n writeln('A program fut\u00e1si ideje',SecondsBetween(Now,progstart));\n writeln('A program indul\u00e1s\u00e1nak \u00e9s befejez\u00e9s\u00e9nek id\u0151pontja: ',DateTimeToStr(progstart), DateTimeToStr(now));\n writeln('A megtal\u00e1lt pr\u00edmek sz\u00e1ma: ',index+1);\nEnd.<\/code><\/pre>\n\n\n\n<p>A program a tesztg\u00e9pen n\u00e9h\u00e1ny tized m\u00e1sodperc alatt futott le. Ez mutatja, hogy a kiss\u00e9 komplik\u00e1ltabb programfel\u00e9p\u00edt\u00e9s \u00e9s a valamivel komplik\u00e1ltabb fejleszt\u00e9si folyamat eredm\u00e9nyek\u00e9ppen jelent\u0151sen gyorsabban fut\u00f3 program k\u00e9sz\u00edthet\u0151. Mind az Interpreteres,, mind a compileres programnyelveknek megvan a maga helye. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kapcsol\u00f3d\u00f3 sz\u00f3cikkek:<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.itkommando.hu\/site\/category\/tanacsok\/python\/\">Python cikksorozat<\/a><br><a href=\"https:\/\/www.itkommando.hu\/site\/category\/tanacsok\/free-pascal\/\">FreePascal<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Egy kedves tanul\u00f3 bar\u00e1tom megkeresett, hogy a python programj\u00e1t \u00edrjam \u00e1t valami compileres nyelvre, mert nagyon lass\u00fa. A program a tanulm\u00e1nyi szintj\u00e9nek teljesen megfelel, de kiv\u00e1l\u00f3 \u00fcr\u00fcgy, hogy az optimaliz\u00e1l\u00e1sr\u00f3l&hellip;<a href=\"https:\/\/www.itkommando.hu\/site\/a_halozat_szolgalataban\/tanulmanyok\/egy-python-program-sikeres-optimalizalasa\/\" class=\"more-link\"><span class=\"more-button\">Tov\u00e1bb a r\u00e9szletekre<span class=\"screen-reader-text\">Egy Python program sikeres optimaliz\u00e1l\u00e1sa<\/span><\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":5769,"parent":397,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[68,90,94,13,16,96],"tags":[],"class_list":["post-5827","page","type-page","status-publish","has-post-thumbnail","hentry","category-free-pascal","category-kockaknak","category-python","category-szoftver","category-tanacsok","category-tanuloknak"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/pages\/5827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/comments?post=5827"}],"version-history":[{"count":27,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/pages\/5827\/revisions"}],"predecessor-version":[{"id":5873,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/pages\/5827\/revisions\/5873"}],"up":[{"embeddable":true,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/pages\/397"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/media\/5769"}],"wp:attachment":[{"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/media?parent=5827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/categories?post=5827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itkommando.hu\/site\/wp-json\/wp\/v2\/tags?post=5827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}