Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
← ΜαθήματαSenior Deep-DivesModule 8 · Async correctness patternsasyncio.Semaphore — bounded concurrency without blocking the looppredict126 / 161
+150 XP
Εργασία
📝 **Εργασία:** Προβλέψτε την ακριβή έξοδο. Το Semaphore περιορίζει τη συγχρονικότητα στο 2. 5 επώνυμες εργασίες προγραμματίζονται μέσω της συλλογής. Κάθε εργασία επιστρέφει το δικό της όνομα. Προβλέψτε τη LIST που συγκεντρώνει επιστροφές — προσέξτε εάν η παραγγελία στην έξοδο είναι η εντολή ΥΠΟΒΟΛΗ ή η εντολή ΟΛΟΚΛΗΡΩΣΗΣ. 📋 Υλοποιήστε την παραπάνω λειτουργία. Οι δοκιμές εκτελούνται αυτόματα. 💡 **Υπόδειξη:** Ξαναδιάβασε τη θεωρία αν κολλήσεις.
Πρόβλεψε έξοδο

Διάβασε τον κώδικα προσεκτικά

import asyncio


async def fetch(sem: asyncio.Semaphore, name: str) -> str:
    async with sem:
        # Stand-in for a real I/O call.
        await asyncio.sleep(0.001)
        return name


async def main() -> list[str]:
    sem = asyncio.Semaphore(2)
    names = ["a", "b", "c", "d", "e"]
    results = await asyncio.gather(*[fetch(sem, n) for n in names])
    return results


print(asyncio.run(main()))

Τι θα εμφανίσει το πρόγραμμα; Γράψε εδώ:

💬 Συζήτηση

Γίνε ο πρώτος — κάνε μια ερώτηση ή μοιράσου μια συμβουλή.
Σύνδεση για να συμμετάσχεις στη συζήτηση. Η ανάγνωση είναι δωρεάν.
Φόρτωση συζήτησης…