This commit is contained in:
lovinervy committed 2026-10-07 13:06:47 +05:00
commit c394677d07
59 files changed
+5149

No files matched your search

@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
"""Демо: потоки выполняются конкурентно — sleep не складывается.
Запуск из корня курса:
python lab02_threads/examples/01_threads_sleep_demo.py
Пять потоков спят по 0.4 c. Сумма времён = 2 c, реальное время ≈ 0.4 c:
пока один поток спит, процессор обслуживает другие.
"""
import threading
import time
N_THREADS = 5
SLEEP = 0.4
def worker(idx: int) -> None:
name = threading.current_thread().name
t0 = time.perf_counter()
time.sleep(SLEEP) # «ожидание сети/диска»
dt = time.perf_counter() - t0
print(f" {name}: {dt:.3f} c")
def main():
print(f"Запускаем {N_THREADS} потоков, каждый спит {SLEEP} c")
threads = [threading.Thread(target=worker, args=(i,), name=f"поток-{i}")
for i in range(N_THREADS)]
t0 = time.perf_counter()
for t in threads:
t.start() # ВСЕ стартуют первыми...
for t in threads:
t.join() # ...потом ВСЕ ждём (start и join не перемешивать!)
total = time.perf_counter() - t0
print(f"Суммарно: {total:.3f} c "
f"(сумма времён была бы {N_THREADS * SLEEP:.1f} c)")
print(f"Ускорение: x{N_THREADS * SLEEP / total:.1f} — так работает I/O-параллелизм")
if __name__ == "__main__":
main()