Я пытаюсь получить дескриптор параллелизма python. Это код, я используюПараллелизм Скорость
import time
from concurrent.futures import ProcessPoolExecutor
def listmaker():
for i in xrange(10000000):
pass
#Without duo core
start = time.time()
listmaker()
end = time.time()
nocore = "Total time, no core, %.3f" % (end- start)
#with duo core
start = time.time()
pool = ProcessPoolExecutor(max_workers=2) #I have two cores
results = list(pool.map(listmaker()))
end = time.time()
core = "Total time core, %.3f" % (end- start)
print nocore
print core
Я был в предположении, что, поскольку я использую два ядра моя скорость будет близка к двойной. Однако, когда я запускаю этот код большую часть времени, выход nocore
работает быстрее, чем выход core
. Это верно, даже если я изменю
def listmaker():
for i in xrange(10000000):
pass
в
def listmaker():
for i in xrange(10000000):
print i
На самом деле в некоторых запусках no core
бежать быстрее. Может ли кто-то пролить свет на этот вопрос? Я правильно настроен? Я делаю что-то неправильно?
'pool.map (listmaker())' вызывает функцию 'listmaker' сразу (в основном процессе) и передает возвращаемое значение (' None') в 'pool.map'. Вам нужно передать функцию 'listmaker' (без круглых скобок) и итерабельность аргументов в' pool.map'. – Blckknght
Это WORKED !, я не понимал, что я назвал эту функцию подобной, если вы ответите на нее плохо. – reticentroot