code: def subproc():
      address = sys.argv[sys.argv.index("subproc") + 1]
      mysock = context.socket(zmq.REQ)
      mysock.connect(address)
      req = Request(
          this="is",
          a="test",
          b=5,
          c=1.3,
          d=numpy.arange(10),
          e=[{"q": numpy.arange(5)}],
      )
      rep = req.send(mysock)
      print("subproc received", rep, rep.__dict__)
      rep = rep.reply(Reply(msg="FOO"), please_reply=True)
      print("subproc received", rep, rep.__dict__)
  
imports: import errno
  import json
  import logging
  import os
  import queue
  import sys
  import threading
  import uuid
  import numpy
  import zmq
  import cellprofiler_core.utilities.grid
  from cellprofiler_core.utilities.zmq._boundary import Boundary
  from cellprofiler_core.utilities.zmq.communicable.reply import LockStatusReply, Reply
  from cellprofiler_core.utilities.zmq.communicable.request import LockStatusRequest, Request
label_desc: Use image node_id 17 for calling a global function with example usage: subproc() without return types