Currently pylcm_handle_timeout intentionally holds the GIL during a select call. For arbitrarily long timeouts, this could simply hold the GIL indefinitely. And, in systems that need rapid thread switching, even small timeouts could cause problems.
I'm not sure what the rationale was here I can see why using the GIL is easier than properly handling concurrency on the C side, but it should be changed to release the GIL during the lcm_handle_timeout, since that is the intended design.