微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在RealSense中共享上下文时进程冻结

如何解决在RealSense中共享上下文时进程冻结

一个定期初始化Realsense管道的进程,在共享上下文时,在单个周期后冻结。 这是最少的重新创建代码

id

如果不共享上下文,则代码在337个周期后崩溃:

import pyrealsense2 as rs
from multiprocessing import Process

ctx = rs.context()


class RS:

    def __init__(self):
        print("init")
        pipe = rs.pipeline(ctx)
        print(pipe)


class Proc(Process):

    def __init__(self):
        super(Proc,self).__init__()

    def run(self):
        for i in range(10):
            print(i)
            RS()
            print("after")


vs = Proc()
vs.start()

在使用线程而不是进程时,不会发生这种情况。

解决方法

在第一个代码段中(使用全局ctx时),您在主流程中初始化ctx,然后创建一个访问该ctx的新流程。

在第二个代码段(ctx内的__init__)中,您将在每次循环迭代中初始化一个新的上下文。

您需要将两者结合起来:在新过程中初始化上下文,但只需初始化一次。像这样的东西:

ctx = None

class RS:
    def __init__(self):
        global ctx
    
        if ctx is None:
            ctx = rs.context()

        print("init")
        pipe = rs.pipeline(ctx)
        print(pipe)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。