在Python中處理大型檔案的最快方法

2021-09-27 02:11:05 字數 1052 閱讀 2917

我們需要處理的各種目錄中有大約500gb的影象。每個影象的大小約為4mb,我們有乙個python指令碼,一次處理乙個影象(它讀取元資料並將其儲存在資料庫中)。每個目錄可能需要1-4小時才能處理,具體取決於大小。

我們可以在gnu / linux作業系統上使用2.2ghz四核處理器和16gb ram。當前指令碼僅使用乙個處理器。利用其他核心和ram來更快地處理影象的最佳方法是什麼?啟動多個python程序來執行指令碼會利用其他核心嗎?

另乙個選擇是使用gearman或beanstalk之類的東西將工作分配給其他機器。我已經看了多處理庫但不知道如何利用它。

啟動多個python程序來執行指令碼會利用其他核心嗎?

是的,如果任務受cpu約束,它將會。這可能是最簡單的選擇。但是,不要為每個檔案或每個目錄生成單個程序; 考慮使用像這樣的工具,parallel(1)並讓它產生每個核心兩個程序的東西。

另乙個選擇是使用gearman或beanstalk之類的東西將工作分配給其他機器。

那可能有用。另外,看看zeromq的python繫結,它使分布式處理變得非常簡單。

我已經看了多處理庫但不知道如何利用它。

比如定義乙個函式,process它讀取單個目錄中的影象,連線到資料庫並儲存元資料。讓它返回乙個表示成功或失敗的布林值。我們directories是目錄處理的列表。然後

import multiprocessing

pool = multiprocessing.pool(multiprocessing.cpu_count())

success = all(pool.imap_unordered(process, directories))

將並行處理所有目錄。如果需要,您還可以在檔案級執行並行操作; 這需要更多的修修補補。

請注意,這將在第一次失敗時停止; 使其容錯需要更多的工作。

本文首發於python黑洞網,csdn同步更新

在Python中處理大型檔案的最快方法

我們需要處理的各種目錄中有大約500gb的影象。每個影象的大小約為4mb,我們有乙個python指令碼,一次處理乙個影象 它讀取元資料並將其儲存在資料庫中 每個目錄可能需要1 4小時才能處理,具體取決於大小。我們可以在gnu linux作業系統上使用2.2ghz四核處理器和16gb ram。當前指令...

python處理大型json檔案的方法

先用python進行預處理,即一整個json資料載入慢,那就分開載入,每次載入乙個json物件,然後使用 json.dumps 方法 儲存到txt中,方便讀取。當然也可以儲存到記憶體中,根據情況而定。演算法思想 因為 json 是一種結構化的資料,所以 是成對存在的。因為使用逐行讀取的方法讀入jso...

python中的檔案處理

python中的檔案處理 檔案的開啟方式 r 唯讀模式 預設模式,檔案必須存在,不存在則丟擲異常 w,只寫模式 不可讀 不存在則建立 存在則清空內容 a,之追加寫模式 不可讀 不存在則建立 存在則只追加內容 讀取file open test encoding utf 8 以utf 8的方式開啟檔案 ...