From db6c60ab7b161be80e84dae2e647072c7d311ac7 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 12 十二月 2019 10:43:38 +0800 Subject: [PATCH] update --- proc/single.go | 65 ++++++++++++++++++++++++-------- 1 files changed, 49 insertions(+), 16 deletions(-) diff --git a/proc/single.go b/proc/single.go index bb2c730..0ad44dd 100644 --- a/proc/single.go +++ b/proc/single.go @@ -5,25 +5,55 @@ "analysis/util" "analysis/work" "context" + "strings" ) -// SingleRole 鍗曡繘绋� -func SingleRole(ctx context.Context, typ string, ipcID string, gpu int, shm bool) { - util.InitDBAPI() - - if typ == util.FeatAll { // run all proc per proc - - allProc(ctx, gpu, shm) - } else if typ == util.FeatFace || typ == util.FeatYolo { // run all face sdk - - sdkProc(ctx, typ, gpu, shm) - } else { // run one sdk per proc, typ is facedetect/yolodetect/facecompare etc. id is ipc - slaveProc(ctx, typ, ipcID, gpu, shm) +func slaveProc(ctx context.Context, typ string, id string, gpu int, shm bool) bool { + name, ok := prepare(typ, gpu) + if !ok { + logo.Errorln("SLAVEPROC ERROR: ", name) + return false } + if id != util.FakeSdkID { + build(name, id, shm) + runAll(ctx) + } else { + + util.InitDBAPI() + + sdks := util.SDKInfo() + // 棣栧厛杩愯yolo + for k, v := range sdks { + if strings.EqualFold(typ, v.SdkType) { + build(v.SdkType, v.IpcId, shm) + logo.Infof("SINGLE PROC ID %s TYPE %s\n", k, v.IpcId, v.SdkType) + } + } + + runAll(ctx) + } + return true } -func sdkProc(ctx context.Context, typ string, gpu int, shm bool) { +// SingleRole 鍗曡繘绋� +func SingleRole(ctx context.Context, typ string, ipcID string, gpu int, shm bool) bool { + util.InitDBAPI() + + ret := false + if typ == util.FeatAll { // run all proc per proc + + ret = allProc(ctx, gpu, shm) + } else if typ == util.FeatFace || typ == util.FeatYolo { // run all face sdk + + ret = sdkProc(ctx, typ, gpu, shm) + } else { // run one sdk per proc, typ is facedetect/yolodetect/facecompare etc. id is ipc + ret = slaveProc(ctx, typ, ipcID, gpu, shm) + } + return ret +} + +func sdkProc(ctx context.Context, typ string, gpu int, shm bool) bool { if typ != util.FeatYolo && typ != util.FeatFace { logo.Errorf("NO THIS SDK PROC SDKPROC : ", typ) } @@ -43,7 +73,7 @@ for k, v := range res { if !v { logo.Errorln(k, " type proc failed to init") - return + return false } } @@ -59,9 +89,10 @@ } runAll(ctx) + return true } -func allProc(ctx context.Context, gpu int, shm bool) { +func allProc(ctx context.Context, gpu int, shm bool) bool { var res []bool for _, v := range work.SDK { @@ -72,7 +103,7 @@ for k, v := range res { if !v { logo.Errorln(k, " ALL PROC FAILED TO INIT") - return + return false } } @@ -94,4 +125,6 @@ } runAll(ctx) + + return true } -- Gitblit v1.8.0