2012-03-08 11 views
1

Windows 7 Pro 64 BitでPython 3.2を実行しています。Pythonスレッドはスクリプトの残りの部分を保持します

OKここには基本的なコードがいくつかありますが、私はそれが欲しいように振る舞いません。

#!/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

あなたの文でスレッドの簡単な例を見つけることを持っている:

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

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

は同等のように記述することができます

まずシャットダウンを呼び出してから、スレッドコンストラクタに結果を渡します。

あなたはそれを呼び出すことなく、あなたの関数を渡す必要がある、とあなたの引数リスト、個別のスレッドに:

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

ありがとう、よく説明された回答ありがとう! – Sparc

2

あなたの目標は、関数に評価されるのではなく、シャットダウンの値(5)、これはNoneです。

def shutdown(sleeptime): 
    def shutter_downer(): 
     time.sleep(sleeptime) 
     print('I have executed') 
    return shutter_downer 
関連する問題