Finally removed pesky _main_wrapper function in greenthread thanks to Ambroff having added keyword argument support in greenlet 0.3. Yay cleaner, better-performing code.
This commit is contained in:
@@ -48,12 +48,6 @@ def spawn(func, *args, **kwargs):
|
|||||||
return g
|
return g
|
||||||
|
|
||||||
|
|
||||||
def _main_wrapper(func, args, kwargs):
|
|
||||||
# function that gets around the fact that greenlet.switch
|
|
||||||
# doesn't accept keyword arguments
|
|
||||||
return func(*args, **kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
def spawn_n(func, *args, **kwargs):
|
def spawn_n(func, *args, **kwargs):
|
||||||
"""Same as :func:`spawn`, but returns a ``greenlet`` object from
|
"""Same as :func:`spawn`, but returns a ``greenlet`` object from
|
||||||
which it is not possible to retrieve either a return value or
|
which it is not possible to retrieve either a return value or
|
||||||
@@ -126,8 +120,8 @@ def call_after_local(seconds, function, *args, **kwargs):
|
|||||||
"has the same signature and semantics (plus a bit extra).",
|
"has the same signature and semantics (plus a bit extra).",
|
||||||
DeprecationWarning, stacklevel=2)
|
DeprecationWarning, stacklevel=2)
|
||||||
hub = hubs.get_hub()
|
hub = hubs.get_hub()
|
||||||
g = greenlet.greenlet(_main_wrapper, parent=hub.greenlet)
|
g = greenlet.greenlet(function, parent=hub.greenlet)
|
||||||
t = hub.schedule_call_local(seconds, g.switch, function, args, kwargs)
|
t = hub.schedule_call_local(seconds, g.switch, *args, **kwargs)
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
|
||||||
@@ -149,12 +143,8 @@ with_timeout = timeout.with_timeout
|
|||||||
|
|
||||||
def _spawn_n(seconds, func, args, kwargs):
|
def _spawn_n(seconds, func, args, kwargs):
|
||||||
hub = hubs.get_hub()
|
hub = hubs.get_hub()
|
||||||
if kwargs:
|
|
||||||
g = greenlet.greenlet(_main_wrapper, parent=hub.greenlet)
|
|
||||||
t = hub.schedule_call_global(seconds, g.switch, func, args, kwargs)
|
|
||||||
else:
|
|
||||||
g = greenlet.greenlet(func, parent=hub.greenlet)
|
g = greenlet.greenlet(func, parent=hub.greenlet)
|
||||||
t = hub.schedule_call_global(seconds, g.switch, *args)
|
t = hub.schedule_call_global(seconds, g.switch, *args, **kwargs)
|
||||||
return t, g
|
return t, g
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -7,7 +7,7 @@ from os import path
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
requirements = []
|
requirements = []
|
||||||
for flag, req in [('--without-greenlet','greenlet >= 0.2')]:
|
for flag, req in [('--without-greenlet','greenlet >= 0.3')]:
|
||||||
if flag in sys.argv:
|
if flag in sys.argv:
|
||||||
sys.argv.remove(flag)
|
sys.argv.remove(flag)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user