Python-prosessin muistivirhe

Käytän Python-ohjelmaa, joka hakee tietoja, joten aina kun yritän noutaa liikaa tietoa (en ole voinut kaapata tiedostoja 16 Mt ) ohjelma kaatuu.

Virhe:

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()"". 

Voinko varata tälle prosessille enemmän muistia? En välitä kuinka monta aikaa se vie tai muita prosesseja, joihin se voi vaikuttaa.

Minulla on päivitetty Raspbian Jessie -käyttöjärjestelmä ja muistikokoonpano on seuraava:

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 

koodi tähän

Kiitos etukäteen.

Pablo

Kommentit

  • Mitä tapahtuu, jos päivität tuettuun Raspbian Busteriin loppupäästä Jessie.

Vastaa

Jos et välitä suoritusajasta, lisää swap-kokoa 100 Mt: sta muutamaan gigatavuun kolminkertaistaa käytettävissä olevan muistin määrän. Jos ennustat nykyisen koodisi tehokkuuden (1 Gt tai RAM-muisti tarvitaan 16 Mt: n tietojen käsittelyyn), sinun pitäisi pystyä käsittelemään jopa 48 Mt tietoa kerralla. / p>

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

Ellei tietojenkäsittelyalgoritmisi ole todella sidottu muistiin, yksinkertaisesti paremman koodin kirjoittaminen voi vähentää huomattavasti muistivaatimuksiasi.

Kommentit

  • Loistava! Lisäsin vaihtokokoa ja olen tähän mennessä pystynyt käsittelemään jopa 20 Mt ja prosessi toimii tällä hetkellä. Hanki sinua kovasti, Dmitry!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *