class_docstr: PipelineManager Test
class_docstr_tok: ["PipelineManager","Test"]
code: def test_runtime_pipeline_release(self):
      self.assertTrue(
          "test-rp/sub-operator" in OperatorRegistry.op_names()
      )
      num = 0
      pool_ref = callable
  
      # pylint: disable=unused-variable
      @register(name="add")
      class AddOperator(PyOperator):
          def __init__(self, fac):
              self.factor = fac
  
          def __call__(self, x):
              return self.factor + x
  
          def __del__(self):
              nonlocal num
              num += 1
  
      def func():
          towhee_dag_test = copy.deepcopy(self.dag_dict)
          towhee_dag_test["op1"]["op_info"][
              "operator"
          ] = "test-rp/sub-operator"
          towhee_dag_test["op2"]["op_info"]["operator"] = "add"
          towhee_dag_test["op2"]["op_info"]["init_args"] = (1,)
          towhee_dag_test["op2"]["op_info"]["init_kws"] = None
          runtime_pipeline = RuntimePipeline(towhee_dag_test)
          nonlocal pool_ref
          pool_ref = weakref.ref(
              runtime_pipeline._operator_pool
          )  # pylint: disable=protected-access
          result = runtime_pipeline(1, 2, 3).get()
          self.assertEqual(result, [-1, 4])
          self.assertIsNotNone(pool_ref())
  
      for i in range(10):
          func()
          self.assertIsNone(pool_ref())
          self.assertEqual(num, i + 1)
  
imports: import copy
  import weakref
  import unittest
  from towhee import pipe
  from towhee.operator import PyOperator
  from towhee.tools.data_visualizer import DataVisualizer
  from towhee.tools.profilers import PerformanceProfiler
  from towhee.runtime.runtime_pipeline import RuntimePipeline
  from towhee.runtime.operator_manager import OperatorRegistry
label_desc: Use image node_id 9 for calling the TestPipelineManager obj's underlying member method code with example usage: obj.test_runtime_pipeline_release() and returns: unknown