Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 3.x_Multiprocessing - Fatal编程技术网

在Python中使用多处理在程序的新实例中重新加载什么

在Python中使用多处理在程序的新实例中重新加载什么,python,python-3.x,multiprocessing,Python,Python 3.x,Multiprocessing,我推测使用多处理会导致程序的新实例被初始化。e、 g.以下代码将导致7个实例被初始化: pool = mp.Pool(processes=7) pool.apply_async(process, args=(properties,)) for properties in properties_list] 但我的问题是,新实例中实际加载的是什么?例如,如果我有file_a.py,它调用了file_b.py中的函数,并且file_b.py中的函数使用了多处理,那么重新加载的只是file_b.py

我推测使用多处理会导致程序的新实例被初始化。e、 g.以下代码将导致7个实例被初始化:

pool = mp.Pool(processes=7) 
pool.apply_async(process, args=(properties,)) for properties in properties_list]

但我的问题是,新实例中实际加载的是什么?例如,如果我有
file_a.py
,它调用了
file_b.py
中的函数,并且
file_b.py
中的函数使用了多处理,那么重新加载的只是
file_b.py
,还是
file_a.py
file_b.py

我相信您所有的导入都会被导入

详细信息因您的启动方法而异

  • fork方法(Unix上的默认方法)-这实际上是您的程序。在这种情况下,父级的所有内存和资源都克隆到子级。在父对象中加载的内容将加载到子对象中。(所有资源,如文件描述符,将在两个进程之间共享。)

  • spawn或forkserver方法(spawn是Windows上的默认值)-这两种方法都至少启动一个python解释器的新实例,并pickle run方法所需的任何参数和其他资源。据我所知,所有文件_a.py都被解析,包括文件_b.py的导入


在后两种情况下,都表示“不会继承不必要的资源”,但这并不是指加载导入的代码;它是指操作系统资源,如共享内存访问或文件描述符。

我相信您所有的导入都将被导入

详细信息因您的启动方法而异

  • fork方法(Unix上的默认方法)-这实际上是您的程序。在这种情况下,父级的所有内存和资源都克隆到子级。在父对象中加载的内容将加载到子对象中。(所有资源,如文件描述符,将在两个进程之间共享。)

  • spawn或forkserver方法(spawn是Windows上的默认值)-这两种方法都至少启动一个python解释器的新实例,并pickle run方法所需的任何参数和其他资源。据我所知,所有文件_a.py都被解析,包括文件_b.py的导入

在后两种情况下,都表示“不会继承不必要的资源”,但这并不是指加载导入的代码;这是关于操作系统资源,如共享内存访问或文件描述符。

解释得很好,我还解释了
多处理
进程之间使用的内存模型解释得很好,我还解释了
多处理
进程之间使用的内存模型