2012-03-08 49 views
1

在Windows 7 Pro 64位上運行Python 3.2。Python線程支持腳本的其餘部分

好的我在這裏有一些非常基本的代碼,這只是表現得不像我想要的那樣。

#!/usr/bin/env python 

import time 
import threading 

def shutdown(sleeptime): 
    time.sleep(sleeptime) 
    print('I have executed') 

threading.Thread(target = shutdown(5)).start() 
print('I go first') 

的想法是,腳本運行時,它開始其休眠5秒鐘,然後打印出「我已執行」的線程。與此同時,腳本繼續前進並打印出「我先走了」。

實際情況是腳本啓動線程,一切都等待它完成,然後繼續。顯然,我不是在做正確的線程,但我無法找到線程的簡單示例與Python 3

回答

10

你聲明:

threading.Thread(target = shutdown(5)).start() 

可以等效寫成:

x = shutdown(5) 
threading.Thread(target = x).start() 
即,

也就是說您先調用shutdown,然後將結果傳遞給Thread構造函數。

你需要通過你的功能,無需調用它,你的參數列表,分別螺紋:

threading.Thread(target = shutdown, args = (5,)).start() 
+0

謝謝,優秀和良好解釋的答案! – Sparc 2012-03-08 21:42:57

2

你的目標不是評價的功能,而是關機的值(5)這是None。你可能想要它更像︰

def shutdown(sleeptime): 
    def shutter_downer(): 
     time.sleep(sleeptime) 
     print('I have executed') 
    return shutter_downer 
相關問題