Разница в исполнении скрипта Python с многопроцессорной библиотекой и в bash с & -operator - PullRequest
0 голосов
/ 05 октября 2018

У меня есть скрипт на python, который заставляет некоторые БД читать, записывать и что-то вычислять - скажем, calculating.py.Это занимает много времени в зависимости от количества записей в БД, и поэтому я подумал, что смогу ускорить его путем многократного выполнения скрипта.Я прочитал несколько хороших статей о многопроцессорной библиотеке для Python и думаю, что именно так я могу это сделать (я также читал о многопоточности).Если я оберну свой код calculation.py в функцию, это может быть что-то вроде этого:

from multiprocessing import Process

def calculate():
    #do something
    print("that's it")

if __name__ == '__main__':
    p1 = Process(target=calculate)
    p2 = Process(target=calculate)
    p3 = Process(target=calculate)
    p4 = Process(target=calculate)
    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p1.join()
    p2.join()
    p3.join()
    p4.join()
    print('all done')

Мне интересно, в чем разница, просто выполнять несколько исполнений в качестве подпроцессов в bash, например:

#!/bin/bash
python3 calculate.py &
python3 calculate.py &
python3 calculate.py &
python3 calculate.py &

У меня сейчас нет настроек сервера, но если бы у меня было 2 ядра ЦП с 4 потоками, я бы ожидал в 4 раза более высокую скорость как одно выполнение / процесс calculation.py.

Чем отличаются оба способа: множественное выполнение в качестве подпроцесса и использование многопроцессорной библиотеки, что технически быстрее и эффективнее в отношении ресурсов?

...