async vs multithreading
Pythonhoz keresgéltem web frameworköt a Flask mellé/helyett és ekkor került elő az async framework téma.
Az a baj, hogy ennek a lényegét nem értem igazán. Félek, hogy ez elég python-specifikus dolog lesz, mert a pythonban úgy tudom, a mai napig létező dolog a GIL, ami meggátolja, hogy több szálon valóban fusson a program.
A több szál csak úgy tud működni, hogy az egyes szálaknak rendszerhívást kell kezdeményezni, például I/O...
Na itt vesztettem el a fonalat.
Felhasználás szempontjából miben tér el az async működés attól, hogy külön szálon futtatok valamit?
Ami példát találtam az asyncio, aiohttp modulokhoz, az gyakorlatilag arról szól, hogy elindít async jelöléssel egy feladatot,majd valahol később egy await paranccsal bevárja.
Ez az én szempontomból ugyanaz, mint amikor külön szálat indítok egy I/O művelettel, ami akár egy http kérés is lehet, majd egyéb teendőim végeztével bevárom azt a szálat.
Csak míg az async működés viszonylag kötött, addig (ha elvonatkoztatunk a python GIL létezésétől) a multithreading segítségével gyakorlatilag bármit megtehetek párhuzamosan.
■ Az a baj, hogy ennek a lényegét nem értem igazán. Félek, hogy ez elég python-specifikus dolog lesz, mert a pythonban úgy tudom, a mai napig létező dolog a GIL, ami meggátolja, hogy több szálon valóban fusson a program.
A több szál csak úgy tud működni, hogy az egyes szálaknak rendszerhívást kell kezdeményezni, például I/O...
Na itt vesztettem el a fonalat.
Felhasználás szempontjából miben tér el az async működés attól, hogy külön szálon futtatok valamit?
Ami példát találtam az asyncio, aiohttp modulokhoz, az gyakorlatilag arról szól, hogy elindít async jelöléssel egy feladatot,majd valahol később egy await paranccsal bevárja.
Ez az én szempontomból ugyanaz, mint amikor külön szálat indítok egy I/O művelettel, ami akár egy http kérés is lehet, majd egyéb teendőim végeztével bevárom azt a szálat.
Csak míg az async működés viszonylag kötött, addig (ha elvonatkoztatunk a python GIL létezésétől) a multithreading segítségével gyakorlatilag bármit megtehetek párhuzamosan.