我使用这个答案是为了在 Linux 机器上用 Python 中的多处理运行并行命令。
我的代码做了类似的事情:
import multiprocessing
import logging
def cycle(offset):
# Do stuff
def run():
for nprocess in process_per_cycle:
logger.info("Start cycle with %d processes", nprocess)
offsets = list(range(nprocess))
pool = multiprocessing.Pool(nprocess)
pool.map(cycle, offsets)
但是我收到了这个错误:OSError: [Errno 24] Too many open files
所以,代码打开了太多的文件描述符,即:它启动了太多的进程并且没有终止它们。
我修复了它,用这些行替换了最后两行:
with multiprocessing.Pool(nprocess) as pool:
pool.map(cycle, offsets)
但我不知道为什么这些行修复了它。
那下面发生了with
什么?