Python 多处理池 OSError:打开的文件太多

Som*_*hit 4 python pool multiprocessing

do_something()我必须检查一对包含 30k 元素的列表总共花费了多少时间。下面是我的代码

def run(a, b, data):
    p = datetime.datetime.now()
    val = do_something(a, b, data[0], data[1])
    q = datetime.datetime.now()
    res = (q - p).microseconds
    return res 
Run Code Online (Sandbox Code Playgroud)

接下来,我使用以下代码调用它:

func = functools.partial(run, a, b)

x = np.linspace(500, 1000, 30000).tolist()
y = np.linspace(20, 500, 30000).tolist()

data = zip(x, y)

with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:
    d = pool.map(func, data)
res = sum(d)
Run Code Online (Sandbox Code Playgroud)

每当我运行这个时,我都会不断得到OSError: [Errno 24] Too many open files. 我该如何解决?

sma*_*nna 5

您可以使用ulimit -u 2048来提高进程限制。

用于ulimit -a检查当前限制。