2015-10-04 73 views
2

我在python中編寫了一個簡單的多進程和多線程代碼,它在windows中工作,但在linux中不工作(我在freebsd和ubuntu上測試過)python time.sleep()在linux和多線程中不起作用

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)

UPDATE:

我使用join()方法在我的過程是這樣的,但還是不行。

... 

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

了'main'過程和進程產生既終止之前線程必須打印的機會休息。你應該讓他們等待/加入(提示) – Pynchia

+0

@Pynchia,我測試.join()並在主進程中休眠,但它不起作用。 –

+0

順便說一句,如果'Test'繼承自'Thread',爲什麼重寫'__init__'如果它什麼也不做? – Pynchia

回答

4

的加入()應在調用線程來等待另一個線程:

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