Как исправить ошибку многопроцессорной карты памяти Python в PyCharm

#python #memory #multiprocessing

Вопрос:

Недавно я сменил компьютер на более мощный, и мой код начал выдавать ошибку памяти, работал без каких-либо проблем в предыдущей конфигурации. Я попытался увеличить значения в параметрах виртуальной машины PyCharm до-Xms32768m-Xmx65536m, но это не помогло. Изменение карты на imap заставляет программу работать. Кто-нибудь знает, что вызывает ошибку памяти и как ее исправить?

 from multiprocessing import Pool


def one_round(i):
    return i


def batch(iterable, n=1):
    current_batch = []
    for item in iterable:
        current_batch.append(item)
        if len(current_batch) == n:
            yield current_batch
            current_batch = []
    if current_batch:
        yield current_batch


def one_batch(batch):
    with open(f"Batches_{batch[0]//10**6}.txt", "w") as outputfile:
        for i in batch:
            outputfile.write(str(one_round(i)) "n")
    return


if __name__ == '__main__':
    p = Pool(13)
    R = 10 ** 9
    results = p.map(one_batch, batch(range(R), 10*6))
    p.close()
    p.join()
 
 Traceback (most recent call last):
  File "...Test.py", line 31, in <module>
    results = p.map(one_batch, batch(range(R), 10*6))
  File "...anaconda3envs...libmultiprocessingpool.py", line 364, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "...anaconda3envs...libmultiprocessingpool.py", line 475, in _map_async
    iterable = list(iterable)
  File "...TestsTest.py", line 11, in batch
    for item in iterable:
MemoryError