我在Python中有一些字符串處理作業。我希望通過使用線程池來加快 的工作速度。字符串處理作業不依賴於其他每個 。結果將被存儲到一個mongodb數據庫中。來自multiprocessing.pool的Python ThreadPool無法利用所有CPU
,我寫我的代碼如下:
thread_pool_size = multiprocessing.cpu_count()
pool = ThreadPool(thread_pool_size)
for single_string in string_list:
pool.apply_async(_process, [single_string ])
pool.close()
pool.join()
def _process(s):
# Do staff, pure python string manipulation.
# Save the output to a database (pyMongo).
我嘗試在Linux機器有8個CPU內核運行代碼。事實證明, 最高CPU使用率只能在130%左右(從頂部讀取),當我 運行幾分鐘的工作。
我的方法是否正確使用線程池?有沒有更好的方法來做到這一點?
您是使用內置的'multiprocessing'模塊還是單獨的模塊? – 101
內建於Python 2.7中。謝謝 –
我刪除了MongoDB標記有兩個原因:首先,顯示的代碼與它無關。其次,這個問題針對的是Pythons的多處理功能。請不要將您的整個堆棧添加到標籤。 –