У меня есть следующий код (Python 3.7 в Windows 64bit):
from time import sleep
import time
from multiprocessing import Process
### function ###
def func(l):
for i in l:
sleep(1)
print (i)
t1 = time.time()
total = t1-t0
print ('time : ',total)
### main code ###
t0 = time.time()
l = list(range(1, 4))
if __name__ == '__main__':
p = Process(target=func, args=(l,))
p.start()
p.join()
sleep(10)
print ('done')
t1 = time.time()
total = t1-t0
print ('time : ',total)
Цель - запустить функцию параллельно с основным блоком кода. Когда я запускаю это, я получаю следующий результат:
done
time : 10.000610828399658
1
time : 11.000777244567871
2
time : 12.001059532165527
3
time : 13.00185513496399
done
time : 23.11873483657837
Однако я ожидал следующего:
1
time: ~1
2
time: ~2
3
time: ~3
done
time: ~10
Поэтому я хочу, чтобы функция работала параллельно с основным кодом. Я в замешательстве, потому что без многопроцессорной обработки этот код должен выполняться не более 13 секунд, а он - 23. Цель - запустить его за 10 секунд.
Как это исправить, чтобы она работала как положено?