임의의 함수를 병렬로 실행하기 위해 다음 도우미 함수를 작성했습니다.Python 다중 처리 풀이 아무것도하지 않습니다
import multiprocessing
def runParallel(fns=[], args=[]):
print('Starting multiprocessing with %i cores' % (multiprocessing.cpu_count() - 1))
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count() - 1)
for fn, arg in zip(fns, args):
pool.apply_async(fn, (arg,))
pool.close()
pool.join()
제가
runParallel(itertools.repeat(self.processFile), fileNamesAndPaths)
에는 processFile가 서명
def processFile(self, filename):
와 classmethod이며 시작 함수의 itertools.repeat 호 및 파일명의리스트 기능을 호출 'print'- 절대로 실행되지 않는 문장. 프로그램은 "3 코어로 멀티 프로세싱 시작"출력 후에 끝납니다.
일반적으로 작품을 멀티 프로세싱에서 프로세스를 사용하지만, 그것은 처리 할 수있는 프로세스의 양 내 CPU 홍수 결국 정지하지만, 적어도에는 processFile 기능이 내가 원했던 이유는
from multiprocessing import Process
def runParallel(fns=[], args=[]):
proc = []
for fn, arg in zip(fns, args):
p = Process(target=fn, args=(arg,))
p.start()
proc.append(p)
for p in proc:
p.join()
라고 내 이해에서 주어진 시간에 프로세스의 양을 처리 할 것이기 때문에 풀을 사용하십시오.
64 비트 Windows 컴퓨터에서 2.7.10을 사용하면 도움이된다.
'Process'와'fn' == 인스턴스 메소드에서 작동한다고 말하는 겁니까? –
@ PeterWood 예.하지만 목록에 약 300 개의 파일이 있으므로 프로그램에서 300 초 후에 20 초 후에 PC가 손상됩니다. – NoMonkey