class_docstr: Thread that runs a function taking another function as input. Each call of the inner function
  adds the point given by the algorithm into the ask queue and then blocks until the main thread sends
  the result back into the tell queue.
  
  Note
  ----
  This thread must be overlaid into another MessagingThread  because:
  - the threading part should hold no reference from outside (otherwise the destructors may wait each other)
  - the destructor cannot be implemented, hence there is no way to stop the thread automatically
class_docstr_tok: ["Thread","that","runs","a","function","taking","another","function","as","input",".","Each","call","of","the","inner","function","adds","the","point","given","by","the","algorithm","into","the","ask","queue","and","then","blocks","until","the","main","thread","sends","the","result","back","into","the","tell","queue",".","Note","--","--","This","thread","must","be","overlaid","into","another","MessagingThread","because",":","-","the","threading","part","should","hold","no","reference","from","outside","(","otherwise","the","destructors","may","wait","each","other",")","-","the","destructor","can","not","be","implemented",",","hence","there","is","no","way","to","stop","the","thread","automatically"]
docstr: Notifies the thread that it must stop
docstr_tok: ["Notifies","the","thread","that","it","must","stop"]
code: def stop(self) -> None:
      """Notifies the thread that it must stop"""
      self.messages_tell.put(None)
  
imports: import warnings
  import threading
  import queue
  import numpy
  import nevergrad.common.typing
  from nevergrad.common.errors import NevergradError
  from nevergrad.parametrization import parameter
  from .None import base
  from .base import IntOrParameter
label_desc: Use image node_id 4 for calling the _MessagingThread obj's underlying member method code with example usage: obj.stop() without return types