首页 > 其他分享 >TFlite 多线程并行

TFlite 多线程并行

时间:2023-02-23 14:25:34浏览次数:32  
标签:TFlite 并行 queue tsnet 进程 model 多线程 data TSNet

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 类可能会占用更多的系统资源。

标签:TFlite,并行,queue,tsnet,进程,model,多线程,data,TSNet
From: https://www.cnblogs.com/can-glan/p/17147783.html

相关文章

  • 多线程
    介绍获得线程号#include<pthread.h>pthread_tpthread_self(void);功能:得到线程id参数:无返回值:调用此函数的线程id创建线程#include<pthread.h>intpthrea......
  • MCU并行协议
    @目录简介8080并口协议6800并口协议简介本文将MOTOROLA的M6800和INTERL的I8080总线协议统称为MCU并行协议。因为其在高速,近距离接口在数据传输方面的优越性,被广泛应用于......
  • java socket网络编程(多线程技术)
    Client.javaimportjava.io.*;importjava.net.*;importjava.util.*;publicclassClient{publicstaticvoidmain(Stringargs[]){Scannerscann......
  • 创建多线程方式3:实现Callable接口 改造下载图片案例
    packagecom.Test;importorg.apache.commons.io.FileUtils;importjava.io.File;importjava.io.IOException;importjava.net.URL;importjava.util.concurrent.*;//开......
  • Java多线程技能-方法介绍
    java多线程技能技术点:线程的启动如何使线程暂停如何使线程停止线程的优先级线程安全相关的问题方法currentThread()currentThread()方法可返回代码段正在被哪......
  • 多线程 龟兔赛跑案例
    packagecom.Java;publicclassRaceimplementsRunnable{//胜利者privatestaticStringwinner;@Overridepublicvoidrun(){for(inti=0......
  • java多线程:详解JUC
    对应狂神说JUC视频1.JUC是什么java.util下的几个包的简称涉及到多线程的开发java.util.concurrentjava.util.atomicjava.util.concurrent.locks2.线程和进程进程:多个程序......
  • Java的多线程+Socket
    客户端: packagecom.wulala;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net......
  • Python 多线程中的 Join Lock 和 Event
    Join函数的作用Join函数的作用主要是提供当前线程阻塞,等待线程结束后,在执行下一个线程,保护线程通畅有序执行如下当没有使用join时,主线程结束了子线程还在运行defd......
  • 【多线程】定位线程死锁
    定位线程死锁的方式jstackpid使用arthas写一个死锁的小例子importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.CountDownLatch;imp......