Polling multiple servers
The two classes seem useless to me.

ServerResults only contains a list, so just use a list. Edit: see comment below.

The CallThreads class is unnecessary, this:

t = CallThreads(poll_server, s, results)


can be written like that:

t = Thread(target=poll_server, args=(s, results))


Note that you could also use the partial function:

t = Thread(target=partial(poll_server, s, results))


or a lambda:

t = Thread(target=lambda: poll_server(s, results))