On Jun 11, 1:23 pm, Fredrik Lundh <[EMAIL PROTECTED]> wrote: > infidel wrote: > > How about something like this? > > > while serverlist: > > server = serverlist.pop(0) > > pinger = ping[server] > > if pinger.returncode==None: > > pinger.poll() > > serverlist.append(server) > > else: > > pingresult[server] = pinger.stdout.read() > > pingreturncode[server] = pinger.returncode > > > Basic idea: as long as there are servers in the list, pop the first > > one out of the list, see if it's done, and if it isn't, put it back on > > the end of the list. > > here's a simple variation of that, which is a bit more efficient, and > perhaps also a bit easier to use in the general case: > > while serverlist: > still_active = [] > for server in serverlist: > pinger = ping[server] > if pinger.returncode is None: > pinger.poll() > still_active.append(server) > else: > pingresult[server] = pinger.stdout.read() > pingreturncode[server] = pinger.returncode > serverlist = still_active > > </F>
Thats an interesting approach but, if the returncode for a given server is None say, 20 times in a row you will have append'ed that server to the list 20 times, i suppose you could check the list to see if its already there but thats a bit kludgey... also, the line "pinger = ping[server]" would have to be extracted from this loop otherwise your going to ping the same server repeatedly until it answers... -- http://mail.python.org/mailman/listinfo/python-list