Sok adat feldolgozására miért jobb több szálon futó program írása? (részletek lent)
Egy nagyobb adathalmaz elemzésére letöltöttem egy célprogramot egy olyan csoport oldaláról, akik konkrétan ezzel foglalkoznak. (a kód Python nyelven íródott). A program azt csinálja, hogy letölti a netről az adatokat, és utána több lépésben feldolgozza letöltött fájlokat. A legtöbb fájlban a kód úgy lett megírva, hogy a multiprocessing.Process segítségével több szálon, párhuzamosan végzi egyszerre több fájl vizsgálatát. Több féle képpen próbálkoztam, de nekem úgy tűnik, hogy a saját gépemen futtatva úgy a leggyorsabb, ha csak 1 szálon indítom el a feldolgozást.
Amúgy is, ha jól tudom, a gép elvileg úgy csinálja a több szálas feladatvégzést, hogy a felosztja, hogy az idő egy részében az egyik, majd a másik feladatot csinálja. Akkor egyáltalán miért elképzelhető, hogy gyorsabb több szálon párhuzamosan végezni a munkát?
Esetleg meg tudnátok azt is mondani, hogy mi alapján lehet kitalálni egy adott gép esetében a szálak optimális számát?
"Amúgy is, ha jól tudom, a gép elvileg úgy csinálja a több szálas feladatvégzést, hogy a felosztja, hogy az idő egy részében az egyik, majd a másik feladatot csinálja."
Alapesetben a multitask valóban így működik, de ha több számítási egység (processzormag) van a rendszerben, akkor képes valódi párhuzamos számításokra.
Sok múlik a folyamatütemezőn is.
Egyébként a többszálú program képes lassabb lenni, mint az egyszálú. Ezt olvasd el: [link]
Más a multi threading és más a parallel processing.
Előző esetben 100 %, hogy lassabb lesz a feladat végrehajtás, mert a taszkváltás elég sok processzoridőt igényel. Mindez másodpercenként 100-szor ...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!