2015-04-28 5 views
0

Чтобы уменьшить время моих вычислений, в следующем сообщении кто-то сказал мне использовать карту с concurrent.futures. Но я не могу прочитать результаты, я получаю «карту объектов-генераторов в 0x7f0ef48ff2d0>» ... как я могу это сделать?Python - Прочтите карту с concurrent.futures

import concurrent.futures 
import numpy 

def f(num): 
    return num * 2 

arr = numpy.array(
    [numpy.array([ 
    numpy.array([1,2,3]), 
    numpy.array([4,5,6]), 
    numpy.array([7,8,9])]), 
    numpy.array([ 
    numpy.array([1,2,3]), 
    numpy.array([4,5,6]), 
    numpy.array([7,8,9])])]) 


with concurrent.futures.ProcessPoolExecutor() as exc: 
    print(exc.map(f, arr)) 
+3

Генераторы ленивые итерируемыми - попробуйте итерацию над ним с 'for' петли или сделать список с помощью' список (генератор) '(заметьте ваш, вероятно, хотите, чтобы избежать составления списка, если вы необходимо - он использует больше памяти и увеличивает время, необходимое для расчета данных). –

ответ

2

Вызов map возвращает итератор, он не возвращает результат напрямую. Вот что вы можете сделать:

with concurrent.futures.ProcessPoolExecutor() as exc: 
    for result in exc.map(f, arr): 
     print(result) 
Смежные вопросы