2
for 루프에 전달하는 파일 목록이 있으며 모든 기능을 수행합니다. 이걸 병렬 처리하는 가장 쉬운 방법은 무엇일까요? 내가 어디서나이 정확한 것을 찾을 수 있을지 확신하지 못하고, 현재 실행중인 파일 하나만 보았 기 때문에 현재 구현이 올바르지 않다고 생각한다. 필자가 한 약간의 독서에서, 나는 이것이 완전히 평행 한 경우라고 생각한다.for 루프가있는 다중 처리 풀
오래된 코드는 다음과 같은 것입니다 :
import pandas as pd
filenames = ['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv']
for file in filenames:
file1 = pd.read_csv(file)
print('running ' + str(file))
a = function1(file1)
b = function2(a)
c = function3(b)
for d in range(1,6):
e = function4(c, d)
c.to_csv('output.csv')
(잘못) 병렬 코드
import pandas as pd
from multiprocessing import Pool
filenames = ['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv']
def multip(filenames):
file1 = pd.read_csv(file)
print('running ' + str(file))
a = function1(file1)
b = function2(a)
c = function3(b)
for d in range(1,6):
e = function4(c, d)
c.to_csv('output.csv')
if __name__ == '__main__'
pool = Pool(processes=4)
runstuff = pool.map(multip(filenames))
나는 (생각) 내가하고 싶은이 하나의 파일이 것은 수 무엇 코어 당 을 계산했습니다. (아마 프로세스마다?). 또한
multiprocessing.cpu_count()
을했고, (나는 그것의 아마 계정 스레드를 고려 그래서 쿼드가) (8)를 얻었다. 나는 약 10 개의 파일을 가지고 있기 때문에 프로세스 당 하나의 파일을 넣으면 속도가 빨라집니다. 첫 번째 라운드의 프로세스가 완료된 후에 나머지 2 개의 파일이 프로세스를 찾길 바란다. 더 명확하게하기 위해, 기능들 (즉, function1, function2 등)은 또한 각각의 파일들 내의 다른 기능들 (즉, 기능 1a, 기능 1b)을 공급한다. import 문을 사용하여 함수 1을 호출합니다.
나는 다음과 같은 오류 얻을 :
OSError: Expected file path name or file-like object, got <class 'list'> type
은 분명히 목록을 전달되기 싫어하지만 난하고 싶지 않아을 파일 이름 [0]에서 그 하나 개의 파일 만 실행되기 때문에 if 문