Код не запускает многопроцессорные функции в python 3.8 - PullRequest
0 голосов
/ 28 мая 2020
import time
import multiprocessing
start = time.perf_counter()

def do_something():
    print("Sleeping 1 second...")
    time.sleep(1)
    print("Done Sleeping...")

p1 = multiprocessing.Process(target= do_something)
p2 = multiprocessing.Process(target= do_something)

p1.start()#these should run the procesess above but do nothing
p2.start()

finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')

Это должно напечатать «Sleeping 1 second ...», а затем «Done Sleeping ...», но код полностью игнорирует p1.start () и просто печатает последние строки, которые показывают время, затраченное на запуск code

Все, что я получаю, это

Finished in 0.03 second(s)

1 Ответ

0 голосов
/ 28 мая 2020

буквально скопировал и вставил ваш код, он работает так, как вы ожидали. чтобы напечатать "sleep 1 se c", а затем "done sleep".

Finished in 0.0 second(s)
Sleeping 1 second...
Sleeping 1 second...
Done Sleeping...
Done Sleeping...

Я знаю, что вы следуете этому руководству: https://www.youtube.com/watch?v=fKl2JW_qrso

it действительно хороший, но вы также должны выслушать его объяснения. он действительно хорош в этом.

он также объясняет, как перейти к этому выводу:

Sleeping 1 second...
Sleeping 1 second...
Done Sleeping...
Done Sleeping...
Finished in 1.01 second(s)

* обратите внимание, что «готово» находится в последней строке

...