<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def put (self, item):
 """Put an item into the queue. Block if necessary until a free slot is available. """

        with self.mutex:
            self._put(item)
            self.not_empty.notify()