Русский
Открыть в Telegram

Пост Когда вы используете fork для создания нового процесса, текущее состояние генератора случайных чисел (включая seed) копи…

12 мая 2026
Б
Библиотека Python разработчика | Книги по питону
Когда вы используете fork для создания нового процесса, текущее состояние генератора случайных чисел (включая seed) копируется в дочерний процесс. Это может привести к тому, что разные процессы будут генерировать одинаковые «случайные» значения. Чтобы избежать этого, необходимо вручную вызывать random.seed() в каждом процессе. Однако, если вы используете модуль multiprocessing, он уже автоматически выполняет это за вас. Пример: import multiprocessing import random import os import sys def test(a): print(random.choice(a), end=' ') a = [1, 2, 3, 4, 5] # Вызов в основном процессе for _ in range(5): test(a) print() # Вызов с multiprocessing.Process for _ in range(5): p = multiprocessing.Process( target=test, args=(a,) ) p.start() p.join() print() # Вызов с использованием os.fork for _ in range(5): pid = os.fork() if pid == 0: test(a) sys.exit() else: os.wait() print() Вывод будет примерно такой: 4 4 4 5 5 1 4 1 3 3 2 2 2 2 2 Причём, начиная с Python 3.7, os.fork также использует механизм at_fork hook, который переинициализирует генератор случайных чисел, как и multiprocessing. Так что в Python 3.7+ вывод кода выше может быть таким: 1 2 2 1 5 4 4 4 5 5 2 4 1 3 1 📲 Мы в MAX 👉@BookPython
6 · 1.3K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуФункция round округляет число до заданной точности в десятичных знаках. >>> round(1.2) 1 >>> round(1.8) 2 >>> round(1.228, 1) 1.2 Также можно задать отрицательнББиблиотека Python разработчика | Книги по питонуСортировка списка с элементами None может быть затруднительной: In [1]: data = [ ...: dict(a=1), ...: None, ...: dict(a=-3), ...: dict(a=2), ...: None, ...: ]
это сообщение
ББиблиотека Python разработчика | Книги по питонуСкажем, вы хотите получить первые N элементов итерируемого объекта. Прямолинейный способ — использовать islice: from itertools import islice def fib(): a, b = 0ББиблиотека Python разработчика | Книги по питонуcollections.defaultdict позволяет создать словарь, который возвращает значение по умолчанию, если запрашиваемого ключа нет (вместо того чтобы выбрасывать исключ
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 943подписчиков725средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем