2017-03-01 5 views
0

Ich habe einen Ordner ("/ home/samples /") und Dateien werden kontinuierlich von einer anderen Anwendung geschrieben. Mein Skript ist:Python: Wie kann ich die Anzahl der Threads basierend auf der Anzahl der eingehenden Dateien ändern?

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() 

Ich möchte die Anzahl der Threads von der Anzahl der Dateien abhängen. Zum Beispiel, wenn es zu viele Dateien im Ordner gibt (sagen wir 5000), möchte ich die Threads auf vielleicht 40 Threads erhöhen. Wenn es weniger als 100 Dateien gibt, möchte ich, dass die Anzahl der Threads 2 oder weniger beträgt.

Wie kann dies implementiert werden?

Vielen Dank!

Antwort

1

Eine einfache Lösung ist es, die Anzahl der Dateien in dem Verzeichnis, mit so etwas wie

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

zu zählen und dann entscheiden, was vor dem for-Schleife zu tun, so etwas wie

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