zhangmeng
2019-12-12 db6c60ab7b161be80e84dae2e647072c7d311ac7
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
}