Вопрос:

Есть ли многопроцессорность в питоне как минимум 0,3 с?

python multiprocessing

25 просмотра

1 ответ

14 Репутация автора

Я пытался научиться использовать многопроцессорный модуль в Python. Кажется, я обнаружил небольшой интересный факт в этом модуле: если использовать функцию pool () для выполнения какого-либо подпроцесса, то, независимо от того, какую работу выполняет каждый отдельный процесс, чтобы завершить весь процесс, это будет стоить как минимум Например, 0,3 с, если я напечатаю что-то 16 раз, это будет стоить очень мало времени, но если я использую 16 процессов, а каждый процесс печатает один раз, это будет стоить 0,3 с, я не знаю, является ли это моим В коде есть какая-то ошибка или что-то еще, может кто-нибудь объяснить это мне, код, который я использую ниже:

import time
from multiprocessing import Pool
import os
start = time.time()

def task():
    print('something')

if __name__ == '__main__':
    print('Parent process %s.' % os.getpid())
    p = Pool(16)
    for i in range(17):
        p.apply_async(task)
    print('Waiting for all subprocesses done...')
    p.close()
    p.join()
    print('All subprocesses done.')
    end = time.time()
    print(end - start)
Автор: Zhou XF Источник Размещён: 11.08.2019 07:50

Ответы (1)


0 плюса

6552 Репутация автора

Эти 300 мс - это просто время, которое ваша операционная система берет на себя, чтобы создать новый процесс в вашей системе. Вы почти ничего не можете сделать с этой задержкой.

Автор: ruohola Размещён: 11.08.2019 08:29
Вопросы из категории :
32x32