Junior — Middle
What methods can be used to implement asynchronous task execution in software systems?
sobes.tech AI
Answer from AI
In Python, asynchronous task execution can be implemented in several ways:
- threading module — for running multiple threads that execute in parallel, but due to GIL (Global Interpreter Lock), they do not always provide a performance boost for CPU-bound tasks.
import threading
def task():
print("Task is running")
thread = threading.Thread(target=task)
thread.start()
thread.join()
- multiprocessing module — for running multiple processes, which allows bypassing GIL limitations and efficiently utilizing multiple CPU cores.
from multiprocessing import Process
def task():
print("Task in process")
process = Process(target=task)
process.start()
process.join()
- asyncio module — for writing asynchronous code using coroutines, especially useful for IO-bound tasks.
import asyncio
async def task():
print("Task start")
await asyncio.sleep(1)
print("Task completed")
asyncio.run(task())
- Libraries for parallelism and asynchrony — for example, concurrent.futures (ThreadPoolExecutor, ProcessPoolExecutor) for convenient management of thread or process pools.
Thus, the choice of method depends on the type of task (CPU-bound or IO-bound) and the requirements for parallelism.