zhangmeng
2019-12-12 db6c60ab7b161be80e84dae2e647072c7d311ac7
update
1个文件已删除
3个文件已修改
119 ■■■■ 已修改文件
main.go 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
proc/master.go 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
proc/single.go 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
proc/slave.go 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go
@@ -143,18 +143,21 @@
    logo.Infoln(os.Args)
    ctx, cancel := context.WithCancel(context.Background())
    ret := false
    if role == single {
        proc.SingleRole(ctx, runType, id, gpu, shm)
        ret = proc.SingleRole(ctx, runType, id, gpu, shm)
    } else if role == master {
        setParamters()
        proc.MasterRole(ctx)
        ret = proc.MasterRole(ctx)
    } else if role == slave {
        proc.SingleRole(ctx, runType, id, gpu, shm)
        ret = proc.SingleRole(ctx, runType, id, gpu, shm)
    }
    c := make(chan os.Signal, 1)
    signal.Notify(c, os.Interrupt, os.Kill, unix.SIGTERM)
    <-c
    if ret {
        c := make(chan os.Signal, 1)
        signal.Notify(c, os.Interrupt, os.Kill, unix.SIGTERM)
        <-c
    }
    cancel()
proc/master.go
@@ -13,7 +13,7 @@
}
// MasterRole master
func MasterRole(ctx context.Context) {
func MasterRole(ctx context.Context) bool {
    reaper(ctx)
    util.InitDBAPI()
@@ -35,4 +35,5 @@
        }
        logo.Infof("START %d PROC %d SDK %s ID %s\n", k, pid, v.IpcId, v.SdkType)
    }
    return true
}
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
}
proc/slave.go
File was deleted