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

Python `具有可变默认参数的部分参数

Python `具有可变默认参数的部分参数,python,Python,因此,我在使用多处理池时遇到了一个问题。下面是一个最小的、可重用的代码段 来自多处理导入池的 从functools导入部分 a=[1,2,3] b=a.复制() def更改(i,x): x[i]=0 #方法1 对于范围(3)中的i: 更改(i,a) 印刷品(a) #输出:[0,0,0] #方法2 将池(2)作为池: map(部分(更改,x=b),列表(范围(3))) 印刷品(b) #输出:[1,2,3] 请参阅后面的方法,该方法不会更改已传递的列表。我想这可以用函数是python中的一级对象来

因此,我在使用多处理池时遇到了一个问题。下面是一个最小的、可重用的代码段

来自多处理导入池的

从functools导入部分
a=[1,2,3]
b=a.复制()
def更改(i,x):
x[i]=0
#方法1
对于范围(3)中的i:
更改(i,a)
印刷品(a)
#输出:[0,0,0]
#方法2
将池(2)作为池:
map(部分(更改,x=b),列表(范围(3)))
印刷品(b)
#输出:[1,2,3]

请参阅后面的方法,该方法不会更改已传递的列表。我想这可以用
函数是python中的一级对象来解释,但不知道如何解释。有什么想法吗?

多处理
会复制每个进程的参数,因此,如果您需要共享可变状态,则不会更改原始列表
b
,而是使用
线程化
或某种数据库操作。所以这是一个多处理问题。谢谢。@AzatIbrakov:
multiprocessing
当然会定义一些可共享的可变数据结构,如果您确实需要GIL自由(并且对共享状态的争用不是很强烈)。
multiprocessing
会复制每个进程的参数,因此不会更改原始列表
b
,如果您需要共享可变状态,请使用
线程化
或某种数据库操作。所以这是一个多处理问题。谢谢。@AzatIbrakov:
多处理
当然会定义一些可共享的可变数据结构,如果您确实需要GIL自由(并且对共享状态的争夺不是很激烈)。