0

У меня есть список заданий, из которых я должен выполнить выполняемые задания и поместить их в индекс. Список заданий будет постоянно обновляться в определенный промежуток времени.Как сделать следующую программу индексации работы эффективной?

Я создал программу со следующими параметрами, и алгоритм выглядит следующим образом. У меня есть параметры all_jobs, jobs_done, jobs_done_temp, jobs_tobe_indexed для пустых списков.

while(True): 
    all_jobs = list(service.jobs)  
    for job in all_jobs: 
     if job["isDone"] == '1': 
      jobs_done.append(job.sid) 

    jobs_tobe_indexed = list(set(jobs_done) - set(jobs_done_temp)) #Gets the jobs which are done and not yet indexed. 
    jobs_done_temp = jobs_done[:] #Copying the jobs_done to the jobs which are indexed so that the set operation above will give jobs which are not done in the next iteration 

    for job in jobs_tobe_indexed: 
     #Index all the jobs 

Я должен запускать этот сценарий непрерывно. All_jobs продолжит обновление, удалит старые задания, которые у него есть автоматически.

Проблема заключается в том, что значения jobs_done и jobs_done_temp будут продолжать увеличиваться и будут создавать переполнение памяти в будущем. Новые задания будут продолжаться, и список all_jobs будет содержать новые задания и некоторые старые задания. Мы должны получить от них новые сделанные задания и проиндексировать их. Задания, индексированные один раз, не должны индексироваться снова.

Может ли кто-нибудь найти лучше сказать мне лучший способ сделать это с надлежащим управлением памятью.

+0

Это база данных для ... будь то текстовый файл, SQLite, Oracle или кластер Hadoop (по мере необходимости). В качестве альтернативы, если вы только сохраняете идентификатор сеанса, а затем пересматриваете, нужно ли вообще что-то хранить или считать, сколько времени требуется для такого хранения. – Ben

+0

'jobs_done' никогда не удаляется и, следовательно, должен расти неограниченно. Можете ли вы рассказать о контексте, то есть о том, чего вы на самом деле пытаетесь достичь? Просто недостаточно информации, чтобы предложить улучшение. – dhke

+0

Главное, что задания, которые выполняются и индексируются, не должны индексироваться снова. Новые рабочие места будут продолжаться. Я должен найти один раз, который будет выполнен и не проиндексирован; и поместить их в индекс. – Sid

ответ

0
def is_done(job): 
    return job['isDone'] == '1' 

done_jobs = filter(is_done, jobs) 

Будет ли это выполнено, что вы просите?

+0

НЕТ, это не так. Прочтите отредактированный вопрос. – Sid

Смежные вопросы