class_docstr: FlatMap node test.
code: def test_multithread(self):
      in_que = DataQueue(
          [("url", ColumnType.SCALAR), ("num", ColumnType.QUEUE)]
      )
      out_que1 = DataQueue(
          [
              ("url", ColumnType.SCALAR),
              ("num", ColumnType.QUEUE),
              ("res", ColumnType.QUEUE),
          ]
      )
      out_que2 = DataQueue([("res", ColumnType.QUEUE)])
      node = create_node(
          self.node_repr, self.op_pool, [in_que], [out_que1, out_que2]
      )
      self.assertTrue(node.initialize())
      f = self.thread_pool.submit(node.process)
  
      def write(size):
          for i in range(size):
              in_que.put(("test_url", range(i, i + 3)))
              time.sleep(0.01)
          in_que.seal()
  
      size = 5
      w_f = self.thread_pool.submit(write, size)
      w_f.result()
      f.result()
      self.assertTrue(node.status == NodeStatus.FINISHED)
      self.assertEqual(out_que1.size, size * 3)
      self.assertEqual(out_que2.size, size * 3)
      for i in range(size * 3):
          self.assertEqual(
              out_que1.get_dict(),
              {
                  "url": "test_url",
                  "num": range(i, i + 3) if i < 5 else Empty(),
                  "res": i // 3 + i % 3 + 1,
              },
          )
      for i in range(size * 3):
          self.assertEqual(
              out_que2.get_dict(), {"res": i // 3 + i % 3 + 1}
          )
      self.assertEqual(out_que1.size, 0)
      self.assertEqual(out_que2.size, 0)
      self.assertIsNone(out_que1.get())
      self.assertIsNone(out_que2.get())
  
imports: import unittest
  import time
  import copy
  import uuid
  from concurrent.futures import ThreadPoolExecutor
  from towhee.runtime.node_repr import NodeRepr
  from towhee.runtime.nodes import create_node, NodeStatus
  from towhee.runtime.data_queue import DataQueue, ColumnType, Empty
  from towhee.runtime.operator_manager import OperatorPool
label_desc: Use image node_id 3 for calling the TestFlatMapNode obj's underlying member method code with example usage: obj.test_multithread() without return types