2017-03-01 32 views
0

我有一個文件夾(「/ home/samples /」),並且文件由另一個應用程序連續寫入。我的腳本是:Python:如何根據傳入文件的數量更改線程數?

def multiThreadedSend(): 
    for root, subdirs, files in os.walk("/home/samples/"): 
     fileList = sorted(files) 
    queue = Queue.Queue() 
    for x in range(4): 
     worker = Thread(target=send_bytes, args=(queue)) 
     worker.daemon = True 
     worker.start() 
    for f in fileList: 
     queue.put(f) 
    queue.join() 

我想線程的數量取決於文件的數量。例如,如果文件夾中的文件太多(例如5000),我希望線程增加到40個線程。如果有少於100個文件,我希望線程數爲2或更少。

這是如何實現的?

謝謝!

回答

1

一個簡單的辦法是計算文件的數量與東西像目錄

numOfFiles = len([f for f in os.listdir("/home/samples")]) 

,然後決定如何爲循環前的事,像

threadNum = 40 if numOfFiles > 5000 else 2 
for x in range(threadNum): 
    [your code]