gevent.threadpool.ThreadPool.imap
and imap_unordered
now accept multiple iterables.ThreadPool
or Group
mapping/application functions should now have the original traceback.gevent.threadpool.ThreadPool.apply
now raises any exception raised by the called function, the same as gevent.pool.Group
/Pool
and the builtin apply
function. This obsoletes the undocumented apply_e
function. Original PR issue #556 by Robert Estelle.selectors
module from patch_all
and patch_select
on Python 3.4. See issue #591.gevent.monkey
module allow knowing what was patched. Discussed in issue #135 and implemented in pull request #325 by Nathan Hoad.gevent.socket.socket.sendall
supports arbitrary objects that implement the buffer protocol (such as ctypes structures), just like native sockets. Reported in issue #466 by tzickel.onerror
attribute present in CFFI 1.2.0 for better signal handling under PyPy. Thanks to Armin Rigo and Omer Katz. (See https://bitbucket.org/cffi/cffi/issue/152/handling-errors-from-signal-handlers-in)gevent.subprocess
module is closer in behaviour to the standard library under Python 3, at least on POSIX. Thepass_fds
, restore_signals
, and start_new_session
arguments are now unimplemented, as are the timeout
parameters to various functions. Under Python 2, the previously undocumented timeout
parameter to Popen.communicate
raises an exception like its Python 3 counterpart.gevent.subprocess
module no longer leaks file descriptors. Reported in pull request #374 by 陈小玉.echoserver.py
no longer binds to the standard X11 TCP port. Reported in issue #485 by minusf.gevent.iwait
no longer throws LoopExit
if the caller switches greenlets between return values. Reported and initial patch in pull request #467 by Alexey Borzenkov.multiprocessing.Process
. Previously the child process would hang indefinitely. Reported in issue #230 by Lx Yu.gevent.killall
accepts an arbitrary iterable for the greenlets to kill. Reported in issue #404 by Martin Bachwerk; seen in combination with older versions of simple-requests.gevent.local.local
objects are now eligible for garbage collection as soon as the greenlet finishes running, matching the behaviour of the built-in threading.local
(when implemented natively). Reported in issue #387 by AusIV.gevent.kill
or gevent.greenlet.Greenlet.kill
) before it is actually started and switched to now prevents the greenlet from ever running, instead of raising an exception when it is later switched to. See issue #330 reported by Jonathan Kamens.