1
네트워크를 통해 많은 쿼리를 수행해야하는 프로그램이 있으므로 작업을 병렬화하는 것이 좋습니다. 정말 내가/O 바운드, 단순히하고 있어요된다병렬 스레드 수를 동적으로 변경하십시오.
for i in range(options.workers):
w = Worker(queue, output_queue, options.site)
w.setDaemon(True)
w.start()
for i, dataset_metadata in enumerate(datasets_metadata):
queue.put((i+1, dataset_metadata))
queue.join()
options.workers
명령 줄에서 온다. 이제 동적으로 작품 수를 변경하고 싶습니다.
첫 번째 질문 : queue.join
이후에 근로자를 추가하는 방법은 무엇입니까?
두 번째 질문 : 런타임에 최적의 작업자 수를 계산하는 방법은 무엇입니까? 나는 스피드 작업/시간을 모니터해야한다고 생각하는데,이 비율이 변하지 않을 때까지 작업자 수를 늘려야한다.
파이썬에서 스레드를 사용하는 것이 단점임을 이해하십시오. [GIL] (http://wiki.python.org/moin/GlobalInterpreterLock)에 대해 읽어보십시오. – Vikas
@Vikas : 내가 말했듯이 내 문제는 입출력이 한정되어있다. –