Olyan Python programot futtatok, amely adatokat selejtez, ezért amikor túl sok adatot próbálok lekérni (nem tudtam fájlokat kaparni) 16 MB-ig ) a program összeomlik.
A hiba:
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()"".
Van-e mód arra, hogy több memóriát tudjak lefoglalni ehhez a folyamathoz. Nem érdekel, hogy mennyi időbe telik, vagy bármilyen más folyamat, amelyre hatással lehet.
Frissítettem egy Raspbian Jessie operációs rendszert, és a memória konfigurációja a következő:
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
itt kódol
Előre is köszönöm,
Pablo
Megjegyzések
- Mi történik, ha a végétől frissít a támogatott Raspbian Buster programra az élet Jessie.
Válasz
Ha nem érdekel a végrehajtási idő, növelje a csere méretét 100 MB-tól néhány GB-ig megháromszorozza a rendelkezésre álló memória mennyiségét. A jelenlegi kód hatékonyságának előrejelzésével (1 GB vagy RAM szükséges 16 MB adat feldolgozásához) képesnek kell lennie akár 48 MB adat feldolgozására is egyszerre. / p>
sudo dphys-swapfile swapoff echo "CONF_SWAPSIZE=2048"|sudo tee /etc/dphys-swapfile sudo dphys-swapfile swapon
Hacsak az adatfeldolgozási algoritmus nem igazán memóriakötésű, egyszerűen a jobb kód megírása jelentősen csökkentheti a memóriaigényét.
Megjegyzések
- Zseniális! Megnöveltem a csere méretét, és eddig 20 MB-ot tudtam feldolgozni, a folyamat jelenleg működik. nagyon kérlek, Dmitrij!