Python で同時スレッド数を制限するにはどうすればよいですか?
たとえば、多くのファイルを含むディレクトリがあり、それらすべてを処理したいのですが、一度に 4 つだけを並列処理したいとします。
これが私がこれまでに持っているものです:
def process_file(fname):
# open file and do something
def process_file_thread(queue, fname):
queue.put(process_file(fname))
def process_all_files(d):
files=glob.glob(d + '/*')
q=Queue.Queue()
for fname in files:
t=threading.Thread(target=process_file_thread, args=(q, fname))
t.start()
q.join()
def main():
process_all_files('.')
# Do something after all files have been processed
一度に 4 つのスレッドのみが実行されるようにコードを変更するにはどうすればよいですか?
すべてのファイルが処理されるのを待ってから、処理されたファイルの作業を続行することに注意してください。