我想使用我的CPU的單核處理文件。但我想這是不足以使用一個單一的核心。相反,如果我有權訪問我的系統的多個核心,那麼我可以使該過程更好更快地運行。使用多線程處理文件使用python3
但不幸的是,我知道只使用單核處理文件。下面是我做的:
data = open('datafile','r',encoding='ascii',errors='ignore')
for line in data.readlines():
splitted = line.lower().strip().split()
check = process(splitted[0],splitted[1])
if check == '':
pass
data.close()
我想知道我該如何使用CPU進行處理TEH process()
而單獨服用line
並根據需要獲取輸出的完整能力?即使在處理過程中我也可以避免線程的死鎖狀態,因爲這可能會對進程輸出造成危險。
請與我分享你的看法。
什麼是死鎖?死鎖狀態需要至少一個鎖,你知道嗎?現在,由於Python有這個叫做GIL的東西,利用多核心的唯一方法是使用進程而不是線程。現在,並行磁盤io可能會也可能不會增加性能(取決於您擁有的磁盤),所以我建議使用'multiprocesing.Pool'並將文件的「塊」從主進程發送到並行處理。 – freakish
@freakish將文件劃分爲塊可能會丟失我不想要的數據,因爲維護完整數據有點重要。 –
爲什麼它會丟失數據?您只需閱讀一行行,並將每行發送給子進程。這裏沒有數據丟失。 – freakish