Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gevent
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gevent
Commits
a27ee3e7
Commit
a27ee3e7
authored
May 07, 2018
by
Jason Madden
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update the list of libuv differences. [skip ci]
parent
1279f045
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
22 deletions
+13
-22
CHANGES.rst
CHANGES.rst
+5
-1
doc/loop_impls.rst
doc/loop_impls.rst
+8
-21
No files found.
CHANGES.rst
View file @
a27ee3e7
...
...
@@ -49,7 +49,11 @@
- libuv now collects all pending watchers and runs their callbacks at
the end of the loop iteration using UV_RUN_ONCE. This eliminates the
need to patch libuv to be greenlet-safe.
need to patch libuv to be greenlet-safe. It also means that
zero-duration timer watchers are actual timer watchers again
(instead of being turned into check watchers); newly added
zero-duration timers cannot block the event loop because they won't
be run until a safe time.
- Python 3.7.0b4 is now the tested and supported version of Python
3.7. PyPy 6.0 has been tested, although CI continues to use 5.10.
...
...
doc/loop_impls.rst
View file @
a27ee3e7
...
...
@@ -216,33 +216,20 @@ differences in the way gevent behaves using libuv compared to libev.
- The order in which timers and other callbacks are invoked may be
different than in libev. In particular, timers and IO callbacks
happen in a different order, and timers may easily be off by up to
half of the supposed 1ms resolution. See :issue:`1057`.
- Starting a ``timer`` watcher does not update the loop's time by
default. This is because, unlike libev, a timer callback can cause
other timer callbacks to be run if they expire because the loop's
time updated, without cycling the event loop. See :issue:`1057`.
libev has also been changed to follow this behaviour.
Also see :issue:`1072`.
- Timers of zero duration do not necessarily cause the event loop to
cycle, as they do in libev. Instead, they may be called
immediately. If zero duration timers are added from other zero
duration timer callbacks, this can lead the loop to appear to
hang, as no IO will actually be done.
To mitigate this issue, ``loop.timer()`` detects attempts to use
zero duration timers and turns them into a check watcher. check
watchers do not support the ``again`` method.
half of the nominal 1ms resolution. See :issue:`1057`.
- There is no support for priorities within classes of watchers. libev
has some support for priorities and this is exposed in the low-level
gevent API, but it was never documented.
- Low-level ``fork`` and ``child`` watchers are not available. gevent
emulates these in Python on platforms that supply :func:`os.fork`.
Child watchers use ``SIGCHLD``, just as on libev, so the same
caveats apply.
- Low-level ``prepare`` watchers are not available. gevent uses
prepare watchers for internal purposes.
prepare watchers for internal purposes. If necessary, this could be
emulated in Python.
Performance
===========
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment