Ce face os.sched_yield(), sched_get_priority_min() și sched_get_priority_max()
sched_yield() cedează voluntar procesorul, lăsând alte procese sau fire gata de rulare să treacă înainte. sched_get_priority_min(p) și sched_get_priority_max(p) dau intervalul de priorități pentru o politică de planificare: os.SCHED_OTHER (normală), os.SCHED_FIFO și os.SCHED_RR (timp real). Pe Linux există și funcții pentru setarea politicii (sched_setscheduler), indisponibile pe macOS.
Parametri
| Parametru | Descriere |
|---|---|
politica |
Politica de planificare. |
Ce returnează
sched_yield: None. Celelalte: întregi.
Exemple
Exemplul 1: Intervalele de prioritate
import os
for nume in ["SCHED_OTHER", "SCHED_FIFO", "SCHED_RR"]:
p = getattr(os, nume)
print(nume, os.sched_get_priority_min(p), os.sched_get_priority_max(p))
os.sched_yield()
Rezultat posibil (pe Linux)
SCHED_OTHER 0 0
SCHED_FIFO 1 99
SCHED_RR 1 99
Greșeli frecvente
- Folosești
sched_yield()într-o buclă de așteptare activă. Consumă tot procesorul; foloseștetime.sleepsau mecanisme de sincronizare.
Comenzi înrudite
os.nice(), getpriority() și setpriority(): Citește și schimbă prioritatea de planificare a unui proces.time.sleep(): Oprește execuția programului pentru un număr de secunde.