Python 如何处理OSError:[Errno 24]打开的文件过多?

Python 如何处理OSError:[Errno 24]打开的文件过多?,python,python-3.x,linux,filehandle,Python,Python 3.x,Linux,Filehandle,正在尝试使用以下HTTP请求下载数据。这一请求将连续提出几千次 with urllib.request.urlopen(url, timeout=120) as resp: with open(save_loc + '.part', 'wb') as fh: while True: chunk = resp.read(1024 * 1024) if not chunk: break

正在尝试使用以下HTTP请求下载数据。这一请求将连续提出几千次

with urllib.request.urlopen(url, timeout=120) as resp:
    with open(save_loc + '.part', 'wb') as fh:
        while True:
            chunk = resp.read(1024 * 1024)
            if not chunk:
                break
            fh.write(chunk)
这被称为:

if __name__ == '__main__':
x = [str(x) for x in range(1,100)]
with Pool(initializer=init_worker, processes=1) as pool:
    result = pool.map(downloadData,x, chunksize=1)
    pool.close()
    pool.join()
下载功能将在将来扩展,这就是为什么我使用该代码进行多处理

我遇到的解决此类错误的方法是使用

ulimit -n [limit]
或者使用“with”语句打开文件


我试图理解,当我使用自动关闭文件处理程序的“with”语句时,为什么会有文件打开的实例(如错误所示)。

我在这里没有看到任何明显的文件句柄泄漏源。但我也没有看到一个;我看到可能包含或不包含问题的独立代码位(第一位代码
是否下载数据
?如果是,什么是
init\u worker
?是否省略了其他相关代码?)。我们需要一个完整的数据库来提供有用的建议。我在这里没有看到任何明显的文件句柄泄漏源。但我也没有看到一个;我看到可能包含或不包含问题的独立代码位(第一位代码
是否下载数据
?如果是,什么是
init\u worker
?是否省略了其他相关代码?)。我们需要一个完整的系统来提供有用的建议。