Tôi phải tạo và điền vào các mảng lớn (ví dụ: 96 Tới, 72000 hàng * 72000 cột) với phao nổi trong mỗi trường hợp đến từ các công thức toán học. Mảng sẽ được tính sau.Cách nhanh nhất để tạo và lấp đầy mảng 2D có khối lượng lớn?
import itertools, operator, time, copy, os, sys
import numpy
from multiprocessing import Pool
def f2(x): # more complex mathematical formulas that change according to values in *i* and *x*
temp=[]
for i in combine:
temp.append(0.2*x[1]*i[1]/64.23)
return temp
def combinations_with_replacement_counts(n, r): #provide all combinations of r balls in n boxes
size = n + r - 1
for indices in itertools.combinations(range(size), n-1):
starts = [0] + [index+1 for index in indices]
stops = indices + (size,)
yield tuple(map(operator.sub, stops, starts))
global combine
combine = list(combinations_with_replacement_counts(3, 60)) #here putted 60 but need 350 instead
print len(combine)
if __name__ == '__main__':
t1=time.time()
pool = Pool() # start worker processes
results = [pool.apply_async(f2, (x,)) for x in combine]
roots = [r.get() for r in results]
print roots [0:3]
pool.close()
pool.join()
print time.time()-t1
- cách nhanh nhất để tạo ra và điền vào mảng NumPy lớn như vậy là gì? Điền danh sách sau đó tổng hợp sau đó chuyển thành mảng numpy?
- Chúng ta có thể song song tính toán khi biết rằng các trường hợp/cột/hàng của mảng 2d độc lập với việc tăng tốc độ lấp đầy mảng không? Các đầu mối/con đường để tối ưu hóa tính toán như vậy bằng cách sử dụng Multiprocessing?
Liệu nó cần phải được theo thời gian thực hoặc bạn có thể tính toán nó off-line và sử dụng ví dụ dưa để đọc nó? –
Tôi thích là thời gian thực nhưng nếu tẩy là nhanh hơn, tôi không nhớ ... hy vọng rằng tôi hiểu rõ câu hỏi của bạn? – sol