Q : ", если n_jobs
больше, чем joblib
не вызывает функцию ."
Что ж, да (вы можете проверить номера PID и PPID),
это просто не представляет результат print( "here" )
Использование определения из Документация по API:
print( *objects, sep = ' ', end = '\n', file = sys.stdout, flush = False )
начать с принудительного выполнения flush = True
Тем не менее, в будущем возникнут другие проблемы. joblib
- порождает (если не вызвано иное, за счет отрицательного влияния на производительность, если вернуться к выполнению чистого [SERIAL]
, управляемого GIL повторного [SERIAL]
кода для любого n_jobs
, запускающего снова один -шаг-за-другим-за-другим, что не имеет смысла, поскольку вы оплачиваете все расходы на создание экземпляров и другие накладные расходы, но при этом не получаете никакой выгоды от ускорения, не так ли?). Используя:
def iter_preDEMO( data, # Pandas DF-alike data
#other args removed for MCVE-clarity
):
def fit_by_idx( idx ): #-------------------------------------[FUNCTION]-def-<start> To be transferred to each remote-joblib-initiated process(es)
print( 'here[{0:_>4d}(PPID:PID={1:_>7d}:{2::>7d})]'.format( idx,
os.getppid(), # test joblib-[FUNCTION]-def-transfer here with: lambda x = "_{0:}_" : x.format( os.getppid() )
os.getpid() # test joblib-[FUNCTION]-def-transfer here with: lambda x = "_{0:}_" : x.format( os.getpid() )
),
end = "\t",
flush = True
)
#------------------------------------------------------------[FUNCTION]-def-<end>
res = np.zeros( ( data.shape[0], 3 ) )
for aBackEND in ( 'threading', 'loky', 'multiprocessing' ):
try:
print( "\n____________________________Going into ['{0:}']-backend".format( aBackEND ) )
with parallel_backend( aBackEND, n_jobs = N_JOBS ):
Parallel( n_jobs = N_JOBS )( delayed( fit_by_idx )( pickled_SER_DES_copy_of_idx )
for pickled_SER_DES_copy_of_idx in range( data.shape[0] )
)
finally:
print( "\n_____________________________Exit from ['{0:}']-backend".format( aBackEND ) )
return res
, вы увидите, как все это работает, используя более подробные print()
-веденные результаты
START: PID=_____22528
____________________________Going into ['threading']-backend
here[___0(PPID:PID=__22527:::22528)] here[___1(PPID:PID=__22527:::22528)] here[___2(PPID:PID=__22527:::22528)] here[___3(PPID:PID=__22527:::22528)] here[___4(PPID:PID=__22527:::22528)] here[___5(PPID:PID=__22527:::22528)] here[___6(PPID:PID=__22527:::22528)] here[___7(PPID:PID=__22527:::22528)] here[___8(PPID:PID=__22527:::22528)] here[___9(PPID:PID=__22527:::22528)] here[__10(PPID:PID=__22527:::22528)] here[__11(PPID:PID=__22527:::22528)] here[__12(PPID:PID=__22527:::22528)] here[__13(PPID:PID=__22527:::22528)] here[__14(PPID:PID=__22527:::22528)] here[__15(PPID:PID=__22527:::22528)] here[__16(PPID:PID=__22527:::22528)]
_____________________________Exit from ['threading']-backend
____________________________Going into ['loky']-backend
here[___0(PPID:PID=__22527:::22528)] here[___1(PPID:PID=__22527:::22528)] here[___2(PPID:PID=__22527:::22528)] here[___3(PPID:PID=__22527:::22528)] here[___4(PPID:PID=__22527:::22528)] here[___5(PPID:PID=__22527:::22528)] here[___6(PPID:PID=__22527:::22528)] here[___7(PPID:PID=__22527:::22528)] here[___8(PPID:PID=__22527:::22528)] here[___9(PPID:PID=__22527:::22528)] here[__10(PPID:PID=__22527:::22528)] here[__11(PPID:PID=__22527:::22528)] here[__12(PPID:PID=__22527:::22528)] here[__13(PPID:PID=__22527:::22528)] here[__14(PPID:PID=__22527:::22528)] here[__15(PPID:PID=__22527:::22528)] here[__16(PPID:PID=__22527:::22528)]
_____________________________Exit from ['loky']-backend
____________________________Going into ['multiprocessing']-backend
here[___0(PPID:PID=__22527:::22528)] here[___1(PPID:PID=__22527:::22528)] here[___2(PPID:PID=__22527:::22528)] here[___3(PPID:PID=__22527:::22528)] here[___4(PPID:PID=__22527:::22528)] here[___5(PPID:PID=__22527:::22528)] here[___6(PPID:PID=__22527:::22528)] here[___7(PPID:PID=__22527:::22528)] here[___8(PPID:PID=__22527:::22528)] here[___9(PPID:PID=__22527:::22528)] here[__10(PPID:PID=__22527:::22528)] here[__11(PPID:PID=__22527:::22528)] here[__12(PPID:PID=__22527:::22528)] here[__13(PPID:PID=__22527:::22528)] here[__14(PPID:PID=__22527:::22528)] here[__15(PPID:PID=__22527:::22528)] here[__16(PPID:PID=__22527:::22528)]
_____________________________Exit from ['multiprocessing']-backend
[[0. 0. 0.]
[0. 0. 0.]
...
]
Также проверьте это и это на вашем O / S, соответственно. ваши действительные версии joblib
и (скрытые) инструментов для травления SER / DES.