Samanaikaisuus Pythonissa: Saatavilla olevat rajapinnat ja niiden käyttö
Niemi, Esa (2019)
Niemi, Esa
2019
Tieto- ja sähkötekniikan TkK tutkinto-ohjelma
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2019-05-31
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-201906282342
https://urn.fi/URN:NBN:fi:tuni-201906282342
Tiivistelmä
Ohjelmoinnissa samanaikaisuus tarkoittaa ohjelman eri osien suorittamista samaan aikaan käyttöjärjestelmän tai ohjelmointikielen mekanismeja käyttäen. Näitä mekanismeja ovat prosessit, säikeet ja asynkroniset mekanismit. Python-ohjelmointikieli tarjoaa useita rajapintoja näiden mekanismien käyttöön.
Tämän työn tarkoitus on esitellä Pythonin CPython-toteutuksen standardikirjaston samanaikaisuuden käytön mahdollistavia rajapintoja ja niiden käyttöä. Lisäksi työssä käsiteltiin rajapinto-jen eroja ja hyviä ja huonoja puolia suorituskyvyn ja käyttökohteiden kannalta.
Työssä selvennettiin onnistuneesti rajapintojen taustalla olevia mekanismeja ja käyttöä, ja todettiin prosessipohjaisen samanaikaisuuden olevan paras ratkaisu laskentaintensiivisille ongelmille. Säikeisiin pohjautuvan samanaikaisuuden todettiin soveltuvan laitteisto- ja verkkopainottei-sille ongelmille niiden keveyden takia. Concurrency.futures-moduulin rajapintojen todettiin olevan helppokäyttöisimmät ja laajimmat samanaikaisuuden suorituksen ja tulosten hallintaan. Asyncio-moduulin todettiin olevan hyödyllinen säikeiden ja prosessien käyttämisen välttämiseen.
Tämän työn tarkoitus on esitellä Pythonin CPython-toteutuksen standardikirjaston samanaikaisuuden käytön mahdollistavia rajapintoja ja niiden käyttöä. Lisäksi työssä käsiteltiin rajapinto-jen eroja ja hyviä ja huonoja puolia suorituskyvyn ja käyttökohteiden kannalta.
Työssä selvennettiin onnistuneesti rajapintojen taustalla olevia mekanismeja ja käyttöä, ja todettiin prosessipohjaisen samanaikaisuuden olevan paras ratkaisu laskentaintensiivisille ongelmille. Säikeisiin pohjautuvan samanaikaisuuden todettiin soveltuvan laitteisto- ja verkkopainottei-sille ongelmille niiden keveyden takia. Concurrency.futures-moduulin rajapintojen todettiin olevan helppokäyttöisimmät ja laajimmat samanaikaisuuden suorituksen ja tulosten hallintaan. Asyncio-moduulin todettiin olevan hyödyllinen säikeiden ja prosessien käyttämisen välttämiseen.
Kokoelmat
- Kandidaatintutkielmat [8695]