Время питона.sleep () не работает в linux и multi thread


Я пишу простой многопроцессный и многопоточный код на python, который работает в windows, но не работает в linux (я тестировал его на freebsd и ubuntu)

import threading
import time
from multiprocessing import Process

class Test(threading.Thread):
    def run(self):
        print('before sleep')
        time.sleep(1)
        print('after sleep')

def run_test():
    Test().start()

if __name__ == "__main__":
    Process(target=run_test, args=()).start() 

Эта программа печатает только "перед сном" и затем завершает работу.

Почему сон здесь не работает? (он работает на windows)

Обновление:

Я использовал join() в моем процессе, как это, но все еще не работает.

...

if __name__ == "__main__":
    pr = Process(target=run_test, args=())
    pr.start()
    pr.join()
1 2

1 ответ:

Join() должен использоваться в вызывающем потоке для ожидания другого потока:

def run_test():
    t = Test()
    t.start()
    t.join()