TGViewer
Python вопросы с собеседований Python вопросы с собеседований @python_job_interview · 24.9K subscribers
Post #1201 3.09K
🖥 Полезный трюк: Полезный трюк: временно фиксируйте генераторы случайных чисел в блоке кода и автоматически возвращайте их состояние.

Это даёт воспроизводимость экспериментов без глобальных побочек. С


from contextlib import contextmanager

@contextmanager
def temp_seed(seed: int):
# Сохраняем состояния
py_state = random.getstate()
try:
import numpy as np
np_state = np.random.get_state()
except Exception:
np = None
np_state = None
try:
import torch
torch_state = torch.random.get_rng_state()
torch_cuda_state = torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None
except Exception:
torch = None
torch_state = torch_cuda_state = None

# Устанавливаем семена
random.seed(seed)
if np: np.random.seed(seed)
if torch:
torch.manual_seed(seed)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(seed)
try:
yield
finally:
# Восстанавливаем состояния
random.setstate(py_state)
if np_state is not None: np.random.set_state(np_state)
if torch_state is not None: torch.random.set_rng_state(torch_state)
if torch_cuda_state is not None and torch.cuda.is_available():
torch.cuda.set_rng_state_all(torch_cuda_state)

# Пример использования
if __name__ == "__main__":
import numpy as np

with temp_seed(123):
print("Блок A:", random.random(), np.random.randint(0, 10))
with temp_seed(123):
print("Блок B:", random.random(), np.random.randint(0, 10)) # те же значения
print("Вне блока:", random.random()) # обычный глобальный поток случайности
  • ❤ 5
  • 👍 5
  • 🔥 2
More from @python_job_interview
  1. Sep 23, 2026Визуализация данных на Python: 10 лучших примеров с кодом Визуализация данных на Python -…
  2. Sep 22, 2026Как правильно получить случайное число в Python Если нужен диапазон от 1 до 100 включитель…
  3. Sep 19, 2026✔️ Кто подключился к вашей сети? NetAlertX обнаруживает устройства и уведомляет об изменен…
  4. Sep 18, 2026✔️ QuiverAI выпустила обновление генератора векторной графики Во второе поколение семейств…
  5. Sep 17, 2026📚 Бесплатная книга по математике для Computer Science и Machine Learning - более 2200 стр…
  6. Sep 15, 2026🐍 Python: как найти изменённое поле во вложенном словаре Сравнение before == after покаже…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →