2015-10-06 57 views
0

我學習在Python的線程和併發的一部分,我選擇,我做了一個os.walk()獲取某個目錄中的文件列表爲例,填充到一個數組使用os.path.join(),然後使用線程來更改這些文件的所有權。這個腳本的目的是學習線程。我的代碼是Python的線程具有可變參數(Python的2.4.3)

for root, dir, file in os.walk("/tmpdir/"): 
    for name in file: 
     files.append(os.path.join(root, name)) 

def filestat(file): 
    print file ##The code to chown will go here. Writing it to just print the file for now. 

thread = [threading.Thread(target=filestat, args="filename") for x in range(len(files))] 
print thread ##This will give me the total number of thread objects that is created 
for t in thread: 
    t.start() ##This will start the thread execution 

len(files)次執行這將打印在「文件名」。但是,我想將列表文件中的文件名作爲參數傳遞給函數。我該怎麼辦?

回答

1

你應該用你遍歷args參數裏面的變量名。不要忘記讓它成爲一個元組。

thread = [threading.Thread(target=filestat, args=(files[x],)) for x in range(len(files))] 

或者

thread = [threading.Thread(target=filestat, args=(filename,)) for filename in files] 
+0

謝謝凱文。那麼這個程序中使用的線程數或併發數是多少? – pkill

+0

每個文件名一個。 – Kevin

+0

如果我想將併發性提高到'x'數字,我應該在這個程序中修改什麼? – pkill