Tôi có một lồng nhau cho vòng lặp trong mã python của tôi trông giống như thế này:parallelise lồng cho vòng lặp trong IPython
results = []
for azimuth in azimuths:
for zenith in zeniths:
# Do various bits of stuff
# Eventually get a result
results.append(result)
Tôi muốn parallelise vòng lặp này trên máy 4 nòng cốt của tôi để tăng tốc độ nó lên . Nhìn vào tài liệu lập trình song song IPython (http://ipython.org/ipython-doc/dev/parallel/parallel_multiengine.html#quick-and-easy-parallelism) dường như có một cách dễ dàng để sử dụng map
để lặp lại song song hoạt động.
Tuy nhiên, để thực hiện điều đó, tôi cần phải có mã bên trong vòng lặp làm chức năng (dễ thực hiện) và sau đó ánh xạ qua chức năng này. Vấn đề tôi có là tôi không thể có được một mảng để ánh xạ chức năng này. itertools.product()
tạo một trình lặp mà tôi không thể sử dụng chức năng bản đồ.
Tôi có đang sủa nhầm cây bằng cách cố gắng sử dụng bản đồ ở đây không? Có cách nào tốt hơn để làm điều đó không? Hoặc là có một số cách để sử dụng itertools.product
và sau đó thực hiện song song với một chức năng ánh xạ trên các kết quả?
chức năng bản đồ Clojure của hoạt động trên trình tự, và trong khi hầu hết các chuỗi là container, thực sự chỉ là của mình một giao diện mà bất cứ điều gì có thể thực hiện. Có điều gì giống như bạn có thể tận dụng lợi thế của (sắt) Python? – Bill
Điều gì xảy ra khi bạn thử 'itertools.product'? Điều đó dường như là cách để làm điều đó. –
'itertools.product' có vẻ là tuyệt vời cho việc tạo ra một trình lặp trên tất cả các kết hợp của góc phương vị và đỉnh số, nhưng tôi dường như không thể song song điều này. Bất kỳ ý tưởng làm thế nào để làm điều này? – robintw