У меня есть скрипт на 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.
Чем отличаются оба способа: множественное выполнение в качестве подпроцесса и использование многопроцессорной библиотеки, что технически быстрее и эффективнее в отношении ресурсов?