0
我有一個計算功能。爲每個數據點計算它需要很長的時間,但是爲整個數據集計算它有內存和網絡問題。我批我的計算(說每200個數據點計算)使事情變得可口。用於在Python中批量計算大數據的裝飾器函數
有沒有一種方法來修飾給定批量大小的任意函數?
喜歡的東西:
@batchify(batch_size=200)
def long_computations(x):
...
return x
data = [0]*100000
batched_results = long_computations(data)
我目前使用的是正常的功能,其工作原理,但我覺得用裝飾可能更模塊化。
def batchify(f, d, batch_size=200):
assert isinstance(d, list), "data has to be in list form."
N = len(d)
results = []
for i in xrange(N/batch_size + 1):
low = i * batch_size
high = min((i + 1) * batch_size, N)
result = f(d[low:high])
results.append(result)
return [r for result in results for r in result]
圍繞裝飾器的另一個包裝。這很有道理,謝謝。 – tokestermw