Errore di memoria del processo Python

Sto eseguendo un programma Python che sta scartando i dati, quindi ogni volta che provo a recuperare troppi dati (non sono stato in grado di raschiare i file fino a 16 MB ) il programma si arresta in modo anomalo.

Lerrore:

INFO: Got 45294 tweets for %23COVID19%20since%3A2020-03-16%20until%3A2020-03-17. Traceback (most recent call last): File "/home/pi/Downloads/coronavirus2.py", line 127, in <module> search_term = "#NoSonVacaciones" File "/home/pi/Downloads/coronavirus2.py", line 77, in myfunction tweets= query_tweets(search_term, begindate= begin_date, enddate = end_date, poolsize=poolsize, lang= lang) File "/home/pi/Downloads/twitterscraper-1.3.1/twitterscraper/query.py", line 285, in query_tweets for new_tweets in pool.imap_unordered(partial(query_tweets_once, limit=limit_per_pool, lang=lang), queries): File "/usr/local/lib/python3.6/site-packages/billiard/pool.py", line 1964, in next raise Exception(value) Exception: Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/billiard/pool.py", line 366, in workloop put((READY, (job, i, result, inqW_fd))) File "/usr/local/lib/python3.6/site-packages/billiard/queues.py", line 366, in put self.send_payload(ForkingPickler.dumps(obj)) File "/usr/local/lib/python3.6/site-packages/billiard/reduction.py", line 56, in dumps cls(buf, protocol).dump(obj) billiard.pool.MaybeEncodingError: Error sending result: ""(<twitterscraper.tweet.Tweet object at 0x734435b0>, <twitterscraper.tweet.Tweet object at 0x726a0750>, <twitterscraper.tweet.Tweet object at 0x726a03b0>, <twitterscraper.tweet.Tweet object at 0x726a0450>, <twitterscraper.tweet.Tweet object at 0x726a0090>, <twitterscraper.tweet.Tweet object at 0x726a0e70>, ... Reason: ""MemoryError()"". 

Cè un modo per allocare più memoria per questo processo. Non mi interessa quanto tempo ci vuole o altri processi che potrebbero essere influenzati.

Ho un OS Raspbian Jessie aggiornato e la configurazione della memoria è la seguente:

pi@raspberrypi:~ $ cat /proc/meminfo MemTotal: 947748 kB MemFree: 285512 kB MemAvailable: 510712 kB Buffers: 78584 kB Cached: 193256 kB SwapCached: 1328 kB Active: 252492 kB Inactive: 362552 kB Active(anon): 99520 kB Inactive(anon): 275632 kB Active(file): 152972 kB Inactive(file): 86920 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 102396 kB SwapFree: 1736 kB Dirty: 20 kB Writeback: 0 kB AnonPages: 341888 kB Mapped: 60048 kB Shmem: 31944 kB Slab: 25744 kB SReclaimable: 11572 kB SUnreclaim: 14172 kB KernelStack: 1976 kB PageTables: 4640 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 576268 kB Committed_AS: 1269388 kB VmallocTotal: 1114112 kB VmallocUsed: 0 kB VmallocChunk: 0 kB CmaTotal: 8192 kB CmaFree: 1412 kB 

codice qui

Grazie in anticipo,

Pablo

Commenti

  • Cosa succede se esegui lupgrade al Raspbian Buster supportato dalla fine- della vita Jessie.

Rispondi

Se non ti interessa il tempo di esecuzione, aumenta la dimensione dello scambio da 100 MB a un paio di GB triplicherà la quantità di memoria disponibile. Proiettando lefficienza del codice corrente (1 GB o RAM necessari per elaborare 16 MB di dati), dovresti essere in grado di elaborare fino a 48 MB di dati contemporaneamente.

sudo dphys-swapfile swapoff echo "CONF_SWAPSIZE=2048"|sudo tee /etc/dphys-swapfile sudo dphys-swapfile swapon 

A meno che lalgoritmo di elaborazione dei dati non sia realmente limitato alla memoria, scrivere semplicemente un codice migliore potrebbe ridurre notevolmente i requisiti di memoria.

Commenti

  • Fantastico! Ho aumentato la dimensione dello swap e finora sono stato in grado di elaborare fino a 20 MB e il processo è attualmente funzionante. T grazie mille, Dmitry!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *