import numpy as np from multiprocessing import Process, Queue def process_data(data, model_TSNet, tsnet_input, tsnet_output, queue): model = tflite_runtime.Interpreter(model_path=model_TSNet) model.allocate_tensors() model.set_tensor(tsnet_input[0]['index'], data.reshape((1,200,8)).astype(np.float32)) model.invoke() result = model.get_tensor(tsnet_output[0]['index']) queue.put(result) # 创建进程 num_processes = 4 # 设置进程数量 processes = [] queue = Queue() for data in temp_data: p = Process(target=process_data, args=(data, model_TSNet, tsnet_input, tsnet_output, queue)) p.start() processes.append(p) # 等待所有进程完成 for p in processes: p.join() # 获取结果 results = [] while not queue.empty(): result = queue.get() results.append(result) TSNet_pre = np.vstack(results)
先定义一个 process_data
函数,用于处理单个数据,并将结果放入队列中。
然后使用 multiprocessing.Process
类创建多个进程,并将数据分配给每个进程进行处理。
在每个进程中创建一个新的模型实例,并使用该模型计算数据。
然后将结果放入队列中,以便在主进程中进行汇总。
最后等待所有进程完成,并将队列中的结果合并为一个数组 TSNet_pre
。
由于每个进程都有自己的内存空间,因此每个进程都需要创建一个新的模型实例,并将其加载到内存中。因此,使用 Process
类可能会占用更多的系统资源。