Как избежать множественных циклов и сократить время? - PullRequest
0 голосов
/ 16 октября 2019

Ниже приведены две группы, в которых я хочу найти, присутствуют ли оба элемента группы в одной записи solr. В настоящее время, например, я дал 9 пунктов в каждой группе и 3 записи Solr. Но это динамично (это может быть огромно). Я пробовал с 3 для петель, как указано ниже. Для небольшого набора записей и групповых элементов это не проблема, но если количество элементов записи / группы велико, для завершения требуется огромное количество времени. Пожалуйста, дайте мне знать, если есть какие-либо варианты, чтобы исправить это.

Могу ли я использовать multiprocess в этом случае?

group1_items = ["group1_item1","group1_item2","group1_item3","group1_item4","group1_item5","group1_item6","group1_item7","group1_item8","group1_item9"]
group2_items = ["group2_item10","group2_item20","group2_item30","group2_item40","group2_item50","group2_item60","group2_item70","group2_item80","group2_item90"]
solrrecordset = [{"groupitems":"group1_item1,group2_item40,group3_itme200"},{"groupitems":"group1_item5,group2_item10,group3_itme300"},{"groupitems":"group3_item556,group4_item105,group5_itme306"}]

groupsets = {}
for eachitem in group1_items:
    for eachitem2 in group2_items:
         for eachrec in solrrecordset:
             if eachitem in eachrec["groupitems"].split(",") and eachitem2 in eachrec["groupitems"].split(","):
                 if eachitem+"|"+eachitem2 in groupsets:
                     groupsets[eachitem+"|"+eachitem2] += 1
                 else:
                     groupsets[eachitem+"|"+eachitem2] = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...