mirror of
https://github.com/python/cpython.git
synced 2024-12-01 22:04:04 +08:00
Patch #957240: Add count parameter to asyncore.loop.
This commit is contained in:
parent
3e501dcfc7
commit
eac324b90b
@ -44,20 +44,20 @@ channel (including any that have been added to the map during asynchronous
|
||||
service) is closed.
|
||||
|
||||
\begin{funcdesc}{loop}{\optional{timeout\optional{, use_poll\optional{,
|
||||
map}}}}
|
||||
Enter a polling loop that only terminates after all open channels
|
||||
have been closed. All arguments are optional. The \var{timeout}
|
||||
argument sets the timeout parameter for the appropriate
|
||||
\function{select()} or \function{poll()} call, measured in seconds;
|
||||
the default is 30 seconds. The \var{use_poll} parameter, if true,
|
||||
indicates that \function{poll()} should be used in preference to
|
||||
\function{select()} (the default is \code{False}). The \var{map} parameter
|
||||
is a dictionary whose items are the channels to watch. As channels
|
||||
are closed they are deleted from their map. If \var{map} is
|
||||
omitted, a global map is used (this map is updated by the default
|
||||
class \method{__init__()}
|
||||
-- make sure you extend, rather than override, \method{__init__()}
|
||||
if you want to retain this behavior).
|
||||
map\optional{,count}}}}}
|
||||
Enter a polling loop that terminates after count passes or all open
|
||||
channels have been closed. All arguments are optional. The \var(count)
|
||||
parameter defaults to infinity, resulting in the loop terminating only
|
||||
when all channels have been closed. The \var{timeout} argument sets the
|
||||
timeout parameter for the appropriate \function{select()} or
|
||||
\function{poll()} call, measured in seconds; the default is 30 seconds.
|
||||
The \var{use_poll} parameter, if true, indicates that \function{poll()}
|
||||
should be used in preference to \function{select()} (the default is
|
||||
\code{False}). The \var{map} parameter is a dictionary whose items are
|
||||
the channels to watch. As channels are closed they are deleted from their
|
||||
map. If \var{map} is omitted, a global map is used (this map is updated
|
||||
by the default class \method{__init__()} -- make sure you extend, rather
|
||||
than override, \method{__init__()} if you want to retain this behavior).
|
||||
|
||||
Channels (instances of \class{asyncore.dispatcher}, \class{asynchat.async_chat}
|
||||
and subclasses thereof) can freely be mixed in the map.
|
||||
|
@ -157,7 +157,7 @@ def poll2(timeout=0.0, map=None):
|
||||
|
||||
poll3 = poll2 # Alias for backward compatibility
|
||||
|
||||
def loop(timeout=30.0, use_poll=False, map=None):
|
||||
def loop(timeout=30.0, use_poll=False, map=None, count=1e309):
|
||||
if map is None:
|
||||
map = socket_map
|
||||
|
||||
@ -166,8 +166,9 @@ def loop(timeout=30.0, use_poll=False, map=None):
|
||||
else:
|
||||
poll_fun = poll
|
||||
|
||||
while map:
|
||||
while map and count >= 0:
|
||||
poll_fun(timeout, map)
|
||||
count = count - 1
|
||||
|
||||
class dispatcher:
|
||||
|
||||
|
@ -319,6 +319,8 @@ Extension modules
|
||||
Library
|
||||
-------
|
||||
|
||||
- asyncore.loop now has repeat count parameter that defaults to infinity.
|
||||
|
||||
- The distutils sdist command now ignores all .svn directories, in
|
||||
addition to CVS and RCS directories. .svn directories hold
|
||||
administrative files for the Subversion source control system.
|
||||
|
Loading…
Reference in New Issue
Block a user