все Python 3Linux · macOSosфункция
os.fork
os — создание процессов
Порождает дочерний процесс копированием текущего: возвращает 0 в потомке и PID потомка в родителе. Доступно на Unix.
Синтаксис
os.fork(...)
Копирует процесс целиком, но в потомке остаётся лишь поток, вызвавший fork: блокировки, захваченные другими потоками, остаются захваченными навсегда. Поэтому с 3.12 fork в многопоточной программе даёт DeprecationWarning, а на macOS fork без exec вообще ненадёжен. Для параллельных задач безопаснее multiprocessing или subprocess; в потомке выходят через os._exit.
Примеры
import os
data = [1, 2, 3]
pid = os.fork() # → ? только Unix (на Windows — AttributeError): в потомке 0, в родителе PID потомка, например 12345
data.append(pid) # → ? память скопирована: у потомка список станет [1, 2, 3, 0], у родителя [1, 2, 3, 12345]
if pid == 0: os._exit(0) # → ? потомок завершается немедленно, минуя atexit-обработчики и сброс буферов
print(os.waitpid(pid, 0)) # → ? только в родителе: (12345, 0) — второй элемент это сырой статус, а не код выхода (см. os.waitstatus_to_exitcode)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности