Kun je meerdere taken tegelijk uitvoeren in één thread in Python?
sobes.tech AI
Antwoord van AI
In Python kunnen meerdere taken gelijktijdig worden uitgevoerd in één thread, door gebruik te maken van asynchrone programmering (asyncio) of generators, die het mogelijk maken om tussen taken te schakelen zonder nieuwe threads te creëren. Echter, vanwege GIL (Global Interpreter Lock) in de standaardimplementatie van CPython, is gelijktijdige uitvoering van meerdere threads die Python-code uitvoeren beperkt: slechts één thread wordt op een gegeven moment uitgevoerd.
Voorbeeld met asyncio voor gelijktijdige uitvoering van taken in één thread:
import asyncio
async def taak(naam, vertraging):
await asyncio.sleep(vertraging)
print(f"Taak {naam} voltooid")
async def main():
await asyncio.gather(
taak('A', 1),
taak('B', 2),
taak('C', 1.5)
)
asyncio.run(main())
Op deze manier kunnen meerdere taken "parallel" worden uitgevoerd in één thread, door te schakelen op basis van de wachttijd, maar niet gelijktijdig in de zin van multithreading.