On clients, each socket is bound either explicitly or implicitly to a local port. This binding lasts as long as the socket does. Whether the same socket is used for multiple requests or a new socket is created for each request is up to the application developer.
On network address translators a timeout based policy is normally used. If no packets are seen for a given mapping during the timeout period then the mapping is discarded.