code: def _run(self):
      cmd_list = [P2PD_PATH, f"-listen={str(self.control_maddr)}"]
      cmd_list += ["-hostAddrs=/ip4/127.0.0.1/tcp/0"]
      if self.enable_connmgr:
          cmd_list += [
              "-connManager=true",
              "-connLo=1",
              "-connHi=2",
              "-connGrace=0",
          ]
      if self.enable_dht:
          cmd_list += ["-dht=true"]
      if self.enable_pubsub:
          cmd_list += ["-pubsub=true", "-pubsubRouter=gossipsub"]
      self.proc_daemon = subprocess.Popen(
          cmd_list, stdout=self.f_log, stderr=self.f_log, bufsize=0
      )
  
imports: import asyncio
  import functools
  import os
  import subprocess
  import time
  import uuid
  from contextlib import asynccontextmanager, suppress
  from typing import NamedTuple
  from multiaddr import Multiaddr, protocols
  from pkg_resources import resource_filename
  from hivemind.p2p.p2p_daemon_bindings.p2pclient import Client
  from test_utils.networking import get_free_port
label_desc: Use image node_id 3 for calling the Daemon obj's underlying member method code with example usage: obj._run() without return types