Многопроцессорный Python struct.error: для формата 'i' требуется -2147483648 <= число <= 2147483647 - PullRequest
1 голос
/ 12 июня 2019

Я создаю поисковый словарь с помощью других словарей. У меня 32 ядра и 64 ГБ ОЗУ, где я его запускаю. names - это огромный массив с примерно 28184057 элементами. Когда я пытаюсь применить pool.map к «именам», я получаю следующую ошибку:

struct.error: 'i' format requires -2147483648 <= number <= 2147483647

Это мой код:

pool = mp.Pool(32)
uni_lookup = pool.map(self.create_lookup_dict, names)
pool.close()

А create_lookup_dict содержит следующий код:

def create_lookup_dict(self, word):
    lookup_word_level = {word: list(set(i[0] for i in self.groups.items() \
                                if word in i[1]))}
    final = []

    if self.tag_dict.get(word, 0) is 0:
        print("No tag")
        return (word, lookup_word_level[word])
    if self.secondary_category_tag_dict.get(word, 0) is 0:
        print("No secondary category tag")
        return (word, lookup_word_level[word])
    for i in lookup_word_level[word]:
        if self.tag_dict[i].intersection(self.tag_dict[word]) and \
        self.secondary_category_tag_dict[i].intersection(self.secondary_category_tag_dict[word]):
            final.append(i)
    return (word, final)

Чего мне не хватает?

...