Настройка multiprocessing python 3.6
У меня есть долго работающий код, который я хочу ускорить за счет параллельного выполнения. По шагам:
- Загрузка архива с сервера по API
- Распаковка и извлечение необходимых файлов.
- Конвертация и обработка файлов.
- Публикация.
Так как без результата выполнения предыдущего процесса не может работать следующий, пришлось играться с time.sleep, но это под конкретный случай, так как количество архивов может быть разное.
Помогите, пожалуйста, избавиться от time.sleep, чтобы он не прекращал процесс, пока не выполнится полностью предыдущий.
Код:
import sys
import glob, os
import datetime
import time
import multiprocessing
from multiprocessing import Process, Queue, Pool
start_time = time.time()
startDate = sys.argv[1]
finishDate = sys.argv[2]
os.system('python3 /var/www/html/algorithm/tiles/delete_all.py')
def step1():
os.system('python3 /var/www/html/algorithm/tiles/download_all.py '+startDate+' '+finishDate)
def step2():
time.sleep(300)
os.system('python3 /var/www/html/algorithm/tiles/walk.py ')
def step3():
time.sleep(500)
os.system('python3 /var/www/html/algorithm/sentinel_gpgeo/public/walk.py ')
def step4():
time.sleep(900)
os.system('python3 /var/www/html/algorithm/sentinel_gpgeo/public/public.py ')
def main():
p1 = Process(target=step1)
p1.start()
p2 = Process(target=step2)
p2.start()
p3 = Process(target=step3)
p3.start()
p4 = Process(target=step4)
p4.start()
p1.join()
p2.join()
p3.join()
p4.join()
if __name__ == '__main__':
main()
print("Number of cpu : ", multiprocessing.cpu_count())
os.system('python3 /var/www/html/algorithm/tiles/delete_all.py ')
print("--- %s seconds ---" % (time.time() - start_time))