Найти - Пользователи
Полная версия: multiprocessing.Pool. Как использовать в имеющемся коде?
Начало » Python для новичков » multiprocessing.Pool. Как использовать в имеющемся коде?
1
Elanyor
Мне поставлена задача: написать программу для расчета числа Pi методом монте-карло с использованием нескольких процессов на основе multiprocessing.Pool.

Первую часть задачи решил так:
 import random
k = 0.0
for i in range(50000):
    x = random.random()
    y = random.random()
    k += (x * x + y * y < 1.0)
print(4 * k / 50000)

Как распараллелить выполнение этой задачи с помощью multiprocessing.Pool?
import multiprocessing as mp. Дальше не знаю, что делать.
Подскажите, пожалуйста.
PEHDOM
сначала вам нужно выделить в функцию операции которые можно распаралелить:
 def f(n):
    x=....
    ...
    return (x * x + y * y < 1.0)
потом создать пул :
 from multiprocessing import Pool
....
if __name__ == '__main__':
    pool = Pool( processes = 4) #количество процессов выбирайте сами.
потом скормить пулу функцию:
 res = poll.map(f, range(50000))
В res увас будет список результатов выполнения 50000 раз функции f в 4-х(или сколько вы там зададите) процессах. Дальше сумируете-умножаете-делите.


Elanyor
 import random
from multiprocessing import Pool
def f(n):
    x = random.random()
    y = random.random()
    return (x * x + y * y < 1.0)
if __name__ == '__main__':
    pool = Pool(processes = 4)
res = pool.map(f, range(50000))
print(res)

Наверное, я где-то намудрил. Ибо в res вообще пусто.
rami
Последние две строчки кода нужно сдвинуть вправо на четыре пробела.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB