Я изо всех сил пытаюсь понять разницу между run()
и start()
.Согласно документации, метод run()
вызывает вызываемый объект, переданный в конструктор объекта, а метод start()
запускает процесс и может вызываться только один раз.
Я попробовал пример ниже:
def get_process_id(process_name):
print process_name, os.getpid()
p1 = multiprocessing.Process(target=get_process_id, args=('process_1',))
p2 = multiprocessing.Process(target=get_process_id, args=('process_2',))
p1.run()
p2.run()
p1.start()
p2.start()
Результаты приведены ниже:
process_1 35138
process_2 35138
process_1 35141
process_2 35142
Когда я использую run()
, это показывает, что p1
и p2
используют один и тот же процесс.Но когда я использую start()
, они дают две разницы.Это потому, что вызов run()
не имеет ничего общего с вызывающим его процессом, а просто вызывает функцию (в данном примере это get_process_id
)?