2014-04-06 23:24 GMT+02:00 AGTUGO <agt...@gmail.com>: > size_sample = 1e7 > x = np.random.uniform(0,1,size_sample) > y = np.random.uniform(0,1,size_sample) >
Los números aleatorios que generas no son importantes, son solo un medio para un fin. Escribirlos en disco (Pytables, mmap, swap...) es un gasto innecesario. La única razón por la que quieres hacerlo en paralelo es para aprovecharte de la vectorización de Numpy; por tanto sólo tiene sentido usar tamaños en los que puedas usarlo. import numexpr as ne import numpy as np total_number = 1e8 size_sample = 1e6 condition_true = 0 for _ in xrange(int(np.ceil(total_number / size_sample))): x = np.random.uniform(0, 1, size_sample) y = np.random.uniform(0, 1, size_sample) condition_true += ne.evaluate('sum(abs(x * x + y * y < 1))') print condition_true / total_number Numexpr está ahí para paralelizar la expresión y optimizar el acceso a memoria y la caché de la CPU (útil en este caso, quizá no tanto en otros más complicados). /David
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/