Use of threads in Python test scripts is not supported because of the following:
Python's threads use a global interpreter lock ( GIL ). This lock effectively serializes your program, so only one thread instance is ever running at any given time. As a consequence Python's threads don't allow for a really independent and concurrent execution like native operating system threads.
Squish's script bindings have some commands that look like synchronous but are actually using an event loop internally. While this event loop spins the GIL is locked and Python's threads cannot run; or vice versa.
Concrete example: waitForObject() when called will constantly communicate with the AUT until the object has appeared. Only then it'll return. For this to work the command needs to spin its own loop. That mechanism unfortunately cannot coexist with Python threads.