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())
Έτσι, πολλές εργασίες μπορούν να εκτελεστούν "παράλληλα" σε ένα μόνο νήμα, εναλλάσσοντας με βάση τον χρόνο αναμονής, αλλά όχι ταυτόχρονα με την έννοια της πολυνηματικής επεξεργασίας.