code: def launch_protocol_listener(
      initial_peers: Sequence[Multiaddr] = (),
  ) -> Tuple[DHTID, mp.Process, PeerID, List[Multiaddr]]:
      remote_conn, local_conn = mp.Pipe()
      dht_id = DHTID.generate()
      process = mp.Process(
          target=run_protocol_listener,
          args=(dht_id, remote_conn, initial_peers),
          daemon=True,
      )
      process.start()
      peer_id, visible_maddrs = local_conn.recv()
  
      return dht_id, process, peer_id, visible_maddrs
  
file_path: hivemind/tests/test_dht_protocol.py
imports: import asyncio
  import multiprocessing
  import random
  import signal
  from typing import List, Sequence, Tuple
  import pytest
  from multiaddr import Multiaddr
  import hivemind
  from hivemind import P2P, PeerID, get_dht_time, get_logger
  from hivemind.dht import DHTID
  from hivemind.dht.protocol import DHTProtocol
  from hivemind.dht.storage import DictionaryDHTValue
label_desc: Use image node_id 3 for calling a global function with example usage: launch_protocol_listener(initial_peers) and returns: dht_id,  process,  peer_id,  visible_maddrs