所以我需要从我的集合中的项目唯一引用特定的子文档.例如:
User = {
'name': 'jim',
'documents: [
{'id': 0001, 'title': "My document"},
{'id': 0002, 'title': "My second document!"},
]
}
Run Code Online (Sandbox Code Playgroud)
所以我需要能够为新文档自动创建ID,最好不要在应用程序级别(因为实际开发场景中会有竞争条件).
有没有办法使用mongo的自动生成的ObjectId(在集合级别的_id字段中使用)或类似的东西?
据我所知,括号只不过是一个包装器__getitem__.以下是我对此进行基准测试的方法:
首先,我生成了一个半大字典.
items = {}
for i in range(1000000):
items[i] = 1
Run Code Online (Sandbox Code Playgroud)
然后,我使用cProfile测试以下三个函数:
def get2(items):
for k in items.iterkeys():
items.get(k)
def magic3(items):
for k in items.iterkeys():
items.__getitem__(k)
def brackets1(items):
for k in items.iterkeys():
items[k]
Run Code Online (Sandbox Code Playgroud)
结果如下:
1000004 function calls in 3.779 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 3.779 3.779 <string>:1(<module>)
1 2.135 2.135 3.778 3.778 dict_get_items.py:15(get2)
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1000000 1.644 0.000 1.644 …Run Code Online (Sandbox Code Playgroud) 这是我正在使用的代码的摘录。我正在遍历添加电子邮件的部分;我的问题不是在每个循环上更改“to”字段,而是附加“to”数据。显然这会导致一些问题,因为 to 字段最终变得越来越长。我试过 msgRoot.del_param('To') 无济于事。我什至尝试将 msgRoot['To'] 设置为引用列表的第一个索引,这样我就可以简单地更改该列表项的值(也不起作用)。
from email.MIMEMultipart import MIMEMultipart
msgRoot = MIMEMultipart('related')
msgRoot['To'] = 'email@email.com'
Run Code Online (Sandbox Code Playgroud) 我一直在谷歌搜索并试图让我的生活延迟追加到即时发生,以便我可以先做一个漂亮的淡出.这里,myObject是一个链接:
<a href="#">My Link</a>
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个无序列表:
<div id="newDiv">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
做这样的事情:
myObject.fadeOut(300).appendTo('#newDiv ul').fadeIn(300);
myObject.wrap('<li></li>');
Run Code Online (Sandbox Code Playgroud)
我知道appendTo不是动画对象,所以它只是瞬间发生.所以我尝试将追加作为fadeOut的回调:
myObject.fadeOut(300, myObject.appendTo('#newDiv')).fadeIn(300);
myObject.wrap('<li></li>');
Run Code Online (Sandbox Code Playgroud)
只是现在它不仅立即发生,包裹不再起作用.我也尝试使用setTimeout来延迟无效.
我正在做一些在运行时编辑进程内存的实验,我注意到当我调用callocgdb'd进程时,调用似乎工作并返回原始传递的指针,但内存似乎没有被初始化为0:
(gdb) call calloc(1, 32)
$88 = (void *) 0x8d9d50
(gdb) x/8xw 0x8d9d50
0x8d9d50: 0xf74a87d8 0x00007fff 0xf74a87d8 0x00007fff
0x8d9d60: 0xfbfbfbfb 0xfbfbfbfb 0x00000000 0x9b510000
Run Code Online (Sandbox Code Playgroud)
memset但是,如果我调用结果指针,初始化工作正常:
(gdb) call memset(0x8d9d50, 0, 32)
$89 = 9280848
(gdb) x/8xw 0x8d9d50
0x8d9d50: 0x00000000 0x00000000 0x00000000 0x00000000
0x8d9d60: 0x00000000 0x00000000 0x00000000 0x00000000
Run Code Online (Sandbox Code Playgroud)