Как запретить многопроцессорной обработке наследовать импорт и глобальные переменные?Python

Программы на Python
Anonymous
Как запретить многопроцессорной обработке наследовать импорт и глобальные переменные?

Сообщение Anonymous »

Я использую многопроцессорность в более крупной базе кода, где некоторые операторы импорта имеют побочные эффекты. Как запустить функцию в фоновом процессе, не наследующую глобальный импорт?

Код: Выделить всё

# helper.py:

print('This message should only print once!')

Код: Выделить всё

# main.py:

import multiprocessing as mp
import helper  # This prints the message.

def worker():
pass  # Unfortunately this also prints the message again.

if __name__ == '__main__':
mp.set_start_method('spawn')
process = mp.Process(target=worker)
process.start()
process.join()
Справочная информация: Импорт TensorFlow инициализирует CUDA, который резервирует некоторый объем памяти графического процессора. В результате создание слишком большого количества процессов приводит к ошибке CUDA OOM, даже если процессы не используют TensorFlow.
Похожий вопрос без ответа:
  • Как избежать двойного импорта с помощью многопроцессорного модуля Python?


Подробнее здесь: https://stackoverflow.com/questions/702 ... nd-globals

Вернуться в «Python»