2017-03-01 4 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

간단한 해결책은

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

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

같은 것을 가진 디렉토리에있는 파일의 수를 계산 한 다음 for 루프 전에 수행 할 작업을 결정하는 것입니다