我正在用python编写我的couchdb视图。我认为做
之类的事情并不是...... pythonicdef fun(doc):
import re
# do something with re
yield 1, 1
因为re是针对导入的每个文档。把import re放在开头会给我一个错误(字符串应该编译成一个合适的函数),一个
del re
视图末端的使函数内的re不可用。
那么如何避免一次又一次地导入re?
答案 0 :(得分:1)
View server处理许多具有相同上下文的文档。所以import re
只在处理第一个文档时才导入模块。所有其他map
次调用只会查找sys.modules
。
答案 1 :(得分:1)
我最近遇到了同样的麻烦并且解决了这个问题:
import re
def foo(doc, re_xx=re.compile("required-pattern")):
# use re_xx
yield 1, 1
del re
答案 2 :(得分:0)
如果你正在使用re模块,可能会有一些事情可以用你的正则表达式完成,以及如何编译它们会比删除模块查找速度更快(python中的字典非常快)。我不明白你为什么要在函数结束时del re
,这可能会减慢速度。
您是否有办法计时,以便在调整视图时可以衡量改进/回归?确定一些时间安排将使调整更容易。