Найти - Пользователи
Полная версия: помогите сделать многопоточность
Начало » Центр помощи » помогите сделать многопоточность
1
wondebar
from math import*
def f(x)
  return 2*x
integrate(a,b):
  с=(a+b)/2
  return ((f(a)+f(b)+4*f(c))/6)
a=0.0
b=2.0
h=0.1
eps=0.01
n=4
s1=1.0
s2=0.0
t=0
while (fabs(s2-s1)>eps):
  s2=s1
  t+=1
  print t
  s1=0
  n*=2
  h=(b-a)/n
  for i in range(0,n):
    s1+=integrate(a+i*h,a+(i+1)*h)
    s1+=h
print 'Result='+str(s1)
вот код,надо написать программу,чтобы считала интеграл методом рунги.программа есть,но она однопоточная,а надо распоточить,помогите пожалуйста.ну и грамотность кода тоже проверьте,если не сложно)
JOHN_16
wondebar
грамотнасть никакая, синтаксические ошибки, некорректные отступы функция f это вообще шедевр кодоплетства. Ваш код копипастом не проверить - это уже большой минус вам. Такое ощущение что вы его откуда то неумело вытащили и попытались под свои нужны приспособить.

По теме: в общем то рискну предположить что такие алгоритмы слабо поддаются распараллеливанию. Гипотетически можно выстроить очередь из итераций цикла while и worker'ами ее обслуживать. Но думаю что кто то предложит вариант лучше
plusplus
В питоне многопоточность для математических вычислений ничего не даст, даже наоборот притормозит программу.
Budulianin
plusplus
В питоне многопоточность для математических вычислений ничего не даст, даже наоборот притормозит программу.

Если только не пользоваться специальными модулями, типа NumPy
plusplus
Budulianin
Если только не пользоваться специальными модулями, типа NumPy

Интересно, а можно поподробней?
Budulianin
plusplus
Интересно, а можно поподробней?

NumPy так написан, что для корректной работы с потоками, GIL ему не нужен, т.е. NumPy, может эффективно делать параллельные вычисления, обходя ограничения GIL.

По моему в SciPy также
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