Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于python多处理池的目的_Python_Python Multiprocessing - Fatal编程技术网

用于python多处理池的目的

用于python多处理池的目的,python,python-multiprocessing,Python,Python Multiprocessing,我一直在学习python中的多进程模块,我注意到 他们使用游泳池 将池(进程=4)作为池: pool.map(功能、项目) vs pool=pool(4) pool.map(功能、项目) 但是在我看到的所有例子中,我只是使用pool=pool(#)。这项研究的目的和区别是什么。我知道这一点,但它对游泳池有什么作用呢。我想我只是不理解池。with在python中用于上下文管理 与pool一起使用时,它相当于在map或apply方法之后调用pool.close()。 如果不调用,您的机器上会出现大量

我一直在学习python中的多进程模块,我注意到 他们使用游泳池

将池(进程=4)作为池:
pool.map(功能、项目)
vs

pool=pool(4)
pool.map(功能、项目)


但是在我看到的所有例子中,我只是使用pool=pool(#)。这项研究的目的和区别是什么。我知道这一点,但它对游泳池有什么作用呢。我想我只是不理解池。

with在python中用于上下文管理

与pool一起使用时,它相当于在map或apply方法之后调用pool.close()。 如果不调用,您的机器上会出现大量的重影进程

另一个例子是在处理文件时使用with,因此隐式调用f.close()

版本3.3中新增:连接对象现在支持上下文管理协议–请参阅上下文管理器类型
\uuuu enter\uuuu()
返回连接对象,
\uuuuu exit\uuuuu()
调用
close()


如果阅读
multiprocessing.pools.Pool
类的源代码,您将看到它有:

def __exit__(self, exc_type, exc_val, exc_tb):
    self.terminate()
因此,当上下文管理器结束时,它只为您调用
terminate()
方法

terminate()
方法会立即停止工作进程,而不会完成未完成的工作,而
close()
方法只会阻止向池提交更多任务

从:

3.3版中的新版本:
Pool
对象现在支持上下文管理 协议–请参阅上下文管理器类型<代码>\uuuu输入\uuuuu()返回池 对象,并调用
终止()