Ita*_*man 2 python copy-on-write
假设我复制一个现有列表:
existing_list = [ 1, 2, 3 ];
copied_list = existing_list[:]
...
copied_list[2] = 'a' // COW happens here
Run Code Online (Sandbox Code Playgroud)
[一些编辑]
我听说当copyed_list或existing_list发生突变时,Python使用写时复制。这是真的?
在我看来,这就像一个过于复杂的事情,需要到处锁定(考虑多线程)。
为了清楚起见:我不是在寻找COW体现。我只是想了解什么是Python标准行为。
没有写时复制。运行时copied_list = existing_list[:]
,将立即构建并填充一个新列表。这是源:http : //hg.python.org/cpython/file/2.7/Objects/listobject.c#l467