"The question you really need to ask is what is the bottleneck"
Although I haven't done any proper profiling, I'm quite certain (through observation of the logs that I create) that the bottleneck is caused through waiting for timeouts as each "offline" device is encountered. Whenever this happens, the script basically blocks and waits, before proceeding. The problem this creates for me (which I forgot to mention in my OP) is that I have been getting a significant number of false negatives, due to the time out being set too low. But increasing the time out by just a few seconds causes the total runtime to increase dramatically, hence my need to look at something like threading.