Это параллельное вычисление с использованием новой библиотеки concurrent.futures в порядке? - PullRequest
0 голосов
/ 21 декабря 2010

Я отправил следующее, которое работает нормально для меня, но у меня есть только одноядерный компьютер, и я принимаю комментарий документация , что он будет распространяться на большее количество ядер, если они у меня будут;автоматически.

from concurrent import futures
import math

NUMBERS = [
    112272537195293,
    112582718962171,
    112272537095293,
    115280098190773,
    115797840077099,
    1099726829285419]

def lowest_factor(n):
    if n % 2 == 0:
        return 2
    sqrt_n = int(math.floor(math.sqrt(n)))
    for i in range(3, sqrt_n + 1, 2):
        if n % i == 0:
            return i
    return n

def main():
    print( 'For these numbers:\n  ' + '\n  '.join(str(p) for p in NUMBERS) )
    with futures.ProcessPoolExecutor() as executor:
        low_factor, number = min( (l, f) for l, f in zip(executor.map(lowest_factor, NUMBERS), NUMBERS) )
        print('    The mnimal prime factor is %d of %i' % (low_factor, number))

if __name__ == '__main__':
    main()

Мне кажется, что все в порядке с Python 3.2b1 (r32b1: 87064, 5 декабря 2010, 19:08:18), но я бы приветствовал критику со стороны других.PS Я сделал выше для этого: http://rosettacode.org/wiki/Parallel_calculations

1 Ответ

0 голосов
/ 17 января 2011

Я купил многоядерный ноутбук на Рождество.Пример работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...