我正在尝试使用mmap从文件加载字典。我将在简化示例中解释我的问题。实际上,我有 10 个文件,它们必须在几毫秒内加载(或者像加载一样)。
所以让我们有一本字典 - 50 mb。我的程序应该在 1 秒内按键找到一个值。在这本字典中搜索不是问题,它可以在 1 秒内完成。问题是当 sb 将输入放入文本字段并按 Enter 键时,程序开始将字典加载到内存中,以便程序可以找到一个键。此加载可能需要几秒钟,但我必须在1 秒内获得结果(在按 Enter 之前无法加载字典)。所以我被推荐使用 mmap 模块,它应该快得多。
我不能谷歌一个很好的例子。我试过这个(我知道这是一个不正确的使用)
def loadDict():
with open('dict','r+b') as f: # used pickle to save
fmap = mmap.mmap(f.fileno(),0)
dictionary = cpickle.load(fmap)
return dictionary
def search(pattern):
dictionary = loadDict()
return dictionary['pattern']
Run Code Online (Sandbox Code Playgroud)
search('apple') <- 仍然需要很多秒
你能给我一个正确使用 mmap 的好例子吗?
我正在尝试使用Wordnet获取给定单词的同义词.问题是尽管我做的和写在这里一样:在这里,它返回错误.
这是我的代码:
from nltk.corpus import wordnet as wn
import nltk
dog = wn.synset('dog.n.01')
print dog.lemma_names
>>> <bound method Synset.lemma_names of Synset('dog.n.01')>
for i,j in enumerate(wn.synsets('small')):
print "Synonyms:", ", ".join(j.lemma_names)
>>> Synonyms:
Traceback (most recent call last):
File "C:/Users/Python/PycharmProjects/PribliznostneVyhladavanie/testy.py", line 38, in <module>
print "Synonyms:", ", ".join(j.lemma_names)
TypeError
Run Code Online (Sandbox Code Playgroud)
我唯一想要的是说出一个单词并获得同义词列表.有谁知道什么是错的?
编辑:我尝试了另一个建议,我在这里找到stackoverflow.它也不起作用.
syns = wn.synsets('car')
print [l.name for s in syns for l in s.lemmas]
>>> TypeError: 'instancemethod' object is not iterable
Run Code Online (Sandbox Code Playgroud) 我是多线程的新手,所以答案可能非常简单.
我正在尝试制作一个类的两个实例并将它们并行运行.我已经读过我可以使用类继承来做到这一点.
class hello(threading.Thread):
def __init__(self,min,max):
threading.Thread.__init__(self)
time.sleep(max)
for i in range(1000):
print random.choice(range(min,max))
h = hello(3,5)
k = hello(0,3)
Run Code Online (Sandbox Code Playgroud)
我注意到这不起作用(第一个输出是3到5之间的数字)
你能解释一下我做错了什么吗?
这种继承是否致力于做其他事情?
编辑:我想并行运行这两个对象,因为第二个对象有较小的等待,它必须尽快打印这些数字.
根据porglezomps的评论,我试图更改代码 - 添加一个打印这些数字的方法,但它会按顺序打印.问题仍然存在.
可以调整Django创建的textarea的大小吗?
class TextAreaForm(forms.Form):
input_text_area = forms.CharField(widget=forms.Textarea)
Run Code Online (Sandbox Code Playgroud)
我想将其放大,但我不知道如何。是否可以使用Django调整大小?
<br>
{{ text_area_form }}
<br>
Run Code Online (Sandbox Code Playgroud)
我在中仅找到用于调整表单大小的解决方案Django administration。
我创造了一个index.html.我想这个页面(或view当有人进入要显示)http://www.mypage.com/和http://www.mypage.com/index/.由于我是新手Django,这可能是一个糟糕的方式:在我的URLS.PY中:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',views.index),
url(r'^index/$',views.index),...
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我很好奇,是否有可能改变url从http://www.mypage.com/到http://www.mypage.com/index/当有人进入http://www.mypage.com/.
我已经尝试过改变这个:
url(r'^$',views.index),
Run Code Online (Sandbox Code Playgroud)
对此:
url(r'^$','/index/'),
Run Code Online (Sandbox Code Playgroud)
但它会引发错误:
Could not import '/index/'. The path must be fully qualified.
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个建议怎么做吗?
是否可以Model在Django中存储元组的字段?就我而言,我有一个模型翻译器。译者应存储有关他可以翻译的语言的信息。但是可能存在这样的情况,翻译人员无法将英语翻译成德语,但他/她可以朝相反的方向做。
因此,一个对象翻译器可以存储以下内容:
但他无法将英语翻译成德语或荷兰语。
因此,我可能要寻找的是存储Models元组的字段(有一个称为Language的模型)。
我在网络上工作。User可以上传文件。这个文件是docx格式的。在他上传文件并选择要将文件翻译成哪种语言后,我想将他重定向到另一个页面,在那里他可以看到翻译价格。价格取决于特定语言和docx文件中的字符数。
我不知道如何处理上传的文件。我有一个获取文件路径并返回多个字符的函数。上传文件并点击提交后,我想调用这个函数,这样我就可以用估计的价格呈现新页面。
我读到我可以跟注temporary_file_path,request.FILES['file']但它提高了
'InMemoryUploadedFile' 对象没有属性 'temporary_file_path'
我想找出上传的文件包含多少个字符并将其发送到另一个视图的请求中 - /order-estimation.
看法:
def create_order(request):
LanguageLevelFormSet = formset_factory(LanguageLevelForm, extra=5, max_num=5)
language_level_formset = LanguageLevelFormSet(request.POST or None)
job_creation_form = JobCreationForm(request.POST or None, request.FILES or None)
context = {'job_creation_form': job_creation_form,
'formset': language_level_formset}
if request.method == 'POST':
if job_creation_form.is_valid() and language_level_formset.is_valid():
cleaned_data_job_creation_form = job_creation_form.cleaned_data
cleaned_data_language_level_formset = language_level_formset.cleaned_data
for language_level_form in [d for d in cleaned_data_language_level_formset if d]:
language = language_level_form['language']
level = language_level_form['level']
Job.objects.create(
customer=request.user,
text_to_translate=cleaned_data_job_creation_form['text_to_translate'], …Run Code Online (Sandbox Code Playgroud) 背后的逻辑是request.POST or None什么?我没有在除Django之外的Python项目中看到过这样的东西.
由于or运算符返回True或False值,如果request.POST不是None,如何Form知道它并将其作为参数发布?
form = MyModelForm(request.POST or None)
Run Code Online (Sandbox Code Playgroud)
事实上,结果应该是,Form(True)如果request.POST不是None,否则Form(False).
这个怎么运作?
我有js一个$(document).ready..块的文件.由于这个块里面有很多匿名函数,我决定移动它们并创建函数.问题是当我将匿名函数更改为函数时,js停止正常工作.
在这种情况下,我正在尝试创建一个destination_from_0_changed避免匿名的函数.
例如:
之前(工作)
$(document).ready(function () {
var destination_from_0 = $("#id_form-0-destination_from");
var destination_to_0 = $('#id_form-0-destination_to');
destination_from_0.on('change', function () {
var destination_id = $(this).val();
if (destination_id==''){
return;
}
var ajax_loading_image = $('#ajax-loading-image');
destination_to_0.empty();
ajax_loading_image.show();
$.ajax({
url: '/ajax/get-destination-to-options/' + destination_id + '/',
success: function (data) {
ajax_loading_image.hide();
destination_to_0.append('<option value="" selected="selected">'+"---------" + '</option>');
$.each(data, function (key, value) {
destination_to_0.append('<option value="' + key + '">' + value + '</option>');
});
destination_to_0.change();
}
})
});
Run Code Online (Sandbox Code Playgroud)
现在:(不起作用)
$(document).ready(function …Run Code Online (Sandbox Code Playgroud) 如何从Django QuerySet获取倒数第二项?我试过my_queryset[-2](在检查my_queryset长度是否大于1之后)如下:
if len(my_queryset)>1:
query = my_queryset[-2]
Run Code Online (Sandbox Code Playgroud)
它返回:
异常值:不支持负索引.
是否有一些"Django"方式来获得这样的项目?
我想到的唯一一件事是反转查询集并得到my_queryset[2]但我不确定它的效率.
编辑:
scans = self.scans.all().order_by('datetime')
if len(scans)>1:
scan = scans[-2]
Run Code Online (Sandbox Code Playgroud) python ×7
django ×6
django-views ×2
django-forms ×1
django-urls ×1
inheritance ×1
javascript ×1
jquery ×1
many-to-many ×1
mmap ×1
multitasking ×1
nlp ×1
nltk ×1
textarea ×1
wordnet ×1