Sobes.tech
Junior — Middle

Μπορεί κανείς να εκτελεί πολλαπλές εργασίες ταυτόχρονα σε ένα μόνο νήμα στην Python;

sobes.tech AI

Απάντηση από AI

Στην Python, σε ένα μόνο νήμα, μπορούν να εκτελεστούν πολλαπλές εργασίες ταυτόχρονα χρησιμοποιώντας ασύγχρονο προγραμματισμό (asyncio) ή γεννήτορες, που επιτρέπουν την εναλλαγή μεταξύ εργασιών χωρίς τη δημιουργία νέων νημάτων. Ωστόσο, λόγω του GIL (Global Interpreter Lock) στην τυπική υλοποίηση του CPython, η ταυτόχρονη εκτέλεση πολλαπλών νημάτων που εκτελούν κώδικα Python είναι περιορισμένη: μόνο ένα νήμα εκτελείται κάθε φορά.

Παράδειγμα με asyncio για ταυτόχρονη εκτέλεση εργασιών σε ένα μόνο νήμα:

import asyncio

async def εργασία(όνομα, καθυστέρηση):
    await asyncio.sleep(καθυστέρηση)
    print(f"Εργασία {όνομα} ολοκληρώθηκε")

async def main():
    await asyncio.gather(
        εργασία('A', 1),
        εργασία('B', 2),
        εργασία('C', 1.5)
    )

asyncio.run(main())

Έτσι, πολλές εργασίες μπορούν να εκτελεστούν "παράλληλα" σε ένα μόνο νήμα, εναλλάσσοντας με βάση τον χρόνο αναμονής, αλλά όχι ταυτόχρονα με την έννοια της πολυνηματικής επεξεργασίας.