У меня есть сценарий Python, который запускает многопроцессорную работу. Пул для обработки большого количества файлов по отдельности.У меня обычно предел процессора равен 8. Моя проблема заключается в том, что после запуска я всегда получаю «IOError: [Errno 24] Слишком много открытых файлов».Каждый дочерний процесс открывает несколько файлов для чтения только с помощью file.open ().Эти обработчики файлов передаются нескольким функциям для извлечения данных.В конце каждого дочернего процесса эти файлы закрываются с помощью file.close ().Я попытался с утверждением также, но не решил проблему.Есть ли у кого-нибудь идеи, что не так.Я погуглил вокруг, но не смог найти никаких ответов.Я закрываю файлы, и функции возвращаются должным образом, так что держите обработчики файлов вокруг.
Мои настройки - Mac 10.5 с python 2.6
Спасибо
Ogan
from custom import func1, func2
# func1 and func2 only seek, read and return values form the file
# however, they do not close the file
import multiprocessing
def Worker(*args):
f1 = open("db1.txt")
f2 = open("db2.txt")
for each in args[1]:
# do many stuff
X = func1(f1)
Y = func2(f2)
f1.close()
f2.close()
return
Data = {1:[2], 2:[3]}
JobP= multiprocessing.Pool(8)
jobP.map_async(Worker, Data.items())
jobP.close()
jobP.join()