使用多进程加载具有多个keras模型的名称空间对象

2024-05-26 22:58:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将大约60个keras模型加载到一个名称空间对象中,这个过程非常缓慢。我想利用多个核心,因为名称空间对象最终将被池进程使用。这就是我所做的

import multiprocessing
from keras.models import load_model
import pdb
from functools import partial

def load(ns, model_name):
    folder = directory
    model = load_model(folder + model_name + '.h5')
    setattr(ns, model_name, model)
    print(model_name, ' loaded')

def main():
    mgr = multiprocessing.Manager()
    ns = mgr.Namespace()

    f = partial(load, ns)
    multiprocessing.set_start_method('spawn', force = True)
    pool = multiprocessing.Pool(processes = multiprocessing.cpu_count())
    pool.map_async(f, ['psy_01', 'psy_02', 'psy_03', 'psy_04', 'psy_05', 'psy_06', 'psy_07', 'psy_08'])
    pool.close()
    pool.join()

    print(ns._getvalue())

if __name__ == '__main__':
    main()

这是一个例子,我试图加载8个模型,但似乎什么都没有加载


Tags: 对象namefrom模型import名称modelmain

热门问题