все четные элементы и формирует новый список:
def simple(objects):
res = []
for obj in objects:
if obj % 2 == 0:
res.append(obj)
objects - это просто от 1 до 100000.
Я хочу ускорить выполнение программы, для этого подключил мультипроцессинг и сделал так:
def my_main(objects):
from multiprocessing import Pool
pool = Pool(4)
pool.map(find_elem, objects)
pool.close()
pool.join()
Но simple() функция выполняется все равно быстрее чем my_main().
В чем может быть проблема?
покажи find_elem
def find_elem(el): if el % 2 == 0: return el
Если нужна скорость, используй оптимизированные библиотеки, например, numpy: import numpy as np array = np.array((10, 23, 99, 40, 70, 22, 19)) evens = array[array%2 == 0] print(evens)
https://stackoverflow.com/questions/20727375/multiprocessing-pool-slower-than-just-using-ordinary-functions Вероятно, для дешёвых функций оверхед взаимодействия между процессами первешивает
Обсуждают сегодня