#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