code: def matched_interpreters(interpreters, constraints):
    
    for interpreter in interpreters:
      if any(interpreter.identity.matches(filt) for filt in constraints):
        TRACER.log("Constraints on interpreters: %s, Matching Interpreter: %s"
                   % (constraints, interpreter.binary), V=3)
        yield interpreter
docs: Given some filters, yield any interpreter that matches at least one of them.
  
    :param interpreters: a list of PythonInterpreter objects for filtering
    :param constraints: A sequence of strings that constrain the interpreter compatibility for this
      pex. Each string uses the Requirement-style format, e.g. 'CPython>=3' or '>=2.7,<3' for
      requirements agnostic to interpreter class. Multiple requirement strings may be combined
      into a list to OR the constraints, such as ['CPython>=2.7,<3', 'CPython>=3.4'].
    :return interpreter: returns a generator that yields compatible interpreters