From e4849ebd2bf4dce95eabc0e7a33699e1665f6b06 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 6 Mar 2012 08:10:33 -0500 Subject: [PATCH] mainloop: Don't create poll until we need to This slightly optimizes the case where we speculatively create a Mainloop we might not use. --- src/ostbuild/pyostbuild/mainloop.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ostbuild/pyostbuild/mainloop.py b/src/ostbuild/pyostbuild/mainloop.py index d56010b3..40a67be8 100644 --- a/src/ostbuild/pyostbuild/mainloop.py +++ b/src/ostbuild/pyostbuild/mainloop.py @@ -25,7 +25,7 @@ class Mainloop(object): DEFAULT = None def __init__(self): self._running = True - self.poll = select.poll() + self.poll = None self._timeouts = [] self._pid_watches = {} self._fd_callbacks = {} @@ -38,7 +38,12 @@ class Mainloop(object): return cls.DEFAULT raise NotImplementedError("Unknown context %r" % (context, )) + def _ensure_poll(self): + if self.poll is None: + self.poll = select.poll() + def watch_fd(self, fd, callback): + self._ensure_poll() self.poll.register(fd) self._fd_callbacks[fd] = callback @@ -63,6 +68,7 @@ class Mainloop(object): if (min_timeout is None) or (ms < min_timeout): min_timeout = ms origtime = time.time() * 1000 + self._ensure_poll() fds = self.poll.poll(min_timeout) for fd in fds: self._fd_callbacks[fd]()