Python time.sleep()在linux和多线程中不起作用

时间:2015-10-04 12:30:56

标签: python python-3.4

我在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() 

这个程序只打印"睡觉前#34;然后退出。

睡觉不能在这里工作的原因? (它适用于Windows)

更新:

我在这样的过程中使用了join(),但仍无效。

...

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

1 个答案:

答案 0 :(得分:4)

应该在调用线程中使用join()来等待另一个线程:

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