主要用到multiprocessing
庫,思想是將大資料讀入記憶體,然後切片儲存,然後多程序分別處理分片。
from multiprocessing import pool
import math
import os
# 讀取資料
path = os.path.join(os.getcwd(),
'test.txt'
)with
open
(path,
'r')
as f:
data = f.readlines(
)
processor=
4l_data =
len(data)
size = math.ceil(l_data / processor)
# 切分資料並儲存
for i in
range
(processor)
: start = size*i
end =
(i+1
)*size if
(i+1
)*size < l_data else l_data
filename =
'en_wiki_'
+str
(i)+
'.txt'
path = os.path.join(os.getcwd(
), filename)
with
open
(path,
'w')
as f:
for i in
range
(start, end)
: f.write(data[i]
)# 刪除讀入記憶體的大資料,高效利用記憶體
del data,l_data
# 處理資料
defproess
(path1, path2, pid)
:# do something
defrun
(i):
filename1 =
'en_wiki_piece_'
+str
(i)+
'.txt'
path1 = os.path.join(os.getcwd(
), filename1)
filename2 =
'processed_wiki_piece_'
+str
(i)+
'.txt'
path2 = os.path.join(os.getcwd(
), filename2)
process(path1, path2, i)
# 開啟多程序處理資料
p=pool(processor)
for i in
range
(processor)
:(i,))
print
(str
(i)+
' processor started !'
)
p.close(
)p.join(
)print
("process over!"
)
python多程序資料處理
使用python3.4 的import concurrent.futures def function json path key frame list with open json path as fr json data json.load fr json video filename vide...
python多程序處理
最近處理fmri資料時由於採用了的演算法需要隨機成千上萬次,因此所需的計算量相當大,單執行緒處理的話一般要一天,python原生是不支援多執行緒的,因此考慮採用python的多程序。其實編寫python多程序的程式還是比較簡單。下面實在自己的電腦上開啟了4程序。任務管理器裡面cpu顯示已經占用了10...
python多程序 python多程序
當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...