Я делаю класс подклассами multiprocessing.Process
. При выполнении некоторых тестов я заметил, что процесс не начинался с вызова start()
. После некоторого тестирования выясняется, что процессы не запускаются до тех пор, пока в модуле __main__
не выполняются 2 строки кода.Процесс Python, начинающийся после двух строк кода
В качестве примера
import multiprocessing
class Test(multiprocessing.Process):
def __init__(self, *args, **kwargs):
super(Test, self).__init__(*args, **kwargs)
print('created')
def run(self, *args, **kwargs):
super(Test, self).run(*args, **kwargs)
print('running')
sample = Test()
>>> created
sample.start()
pass # Did not start yet
pass # Will start after this
>>> running
Я проверил это на различных платформах, и она работает, как ожидалось там. Я запускаю Windows 10, Python 3.5.2. Выход sys.version
: '3.5.2 |Continuum Analytics, Inc.| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]'
Вы всегда работаете на интерактивной сессии python? Вы получаете то же самое, когда исполняете код как скрипт из командной строки? – cdarke
Кажется, что это одно и то же, будь то интерактивный сеанс, сценарий или импорт модуля. – DeepHorizons