[Python-ideas] @run_as_thread decorator
g.rodola at gmail.com
Sat Mar 5 19:00:52 CET 2011
I agree it should be possible to pass the same arguments of the
original constructor, in fact this is the code I use across the
various "private" projects I work on:
def run_as_thread(group=None, name=None, verbose=None, daemon=None):
"""Decorator to run a callable in a thread returning a
... def foo():
... return "done"
>>> t = foo()
def inner(*args, **kwargs):
t = threading.Thread(target=fun, args=args, kwargs=kwargs,
group=group, name=name, verbose=verbose)
if hasattr(group, '__call__'):
# defined as @run_as_thread rather than @run_as_thread(arg=...)
fun = group
group = None
outer = outer(fun)
I don't know whether it is a good idea to provide such a thing
natively, but I can't even figure out what exactly is wrong/weird with
This is why I opened this discussion, basically. =)
2011/3/5 Masklinn <masklinn at masklinn.net>:
> On 2011-03-05, at 14:21 , Giampaolo Rodolà wrote:
>>>>> import time, threading
>> ... def foo():
>> ... time.sleep(100)
>> ... return 1
>>>>> t = foo()
>> The same thing could be done for multiprocessing module.
>> Would this be acceptable for inclusion?
> That looks good, though though I think run_as_thread needs to take arguments:
> * daemonifying needs to be performed *before* the thread is started, so it needs at least one argument `daemon=False` (which runs a daemonified thread if set to true)
> * maybe run_as_thread could take a second argument `start=True` to know whether the function should generate a started thread or a thread to start? Not sure about that one, are there situations where you'd *need* a yet-to-be-started thread apart from daemonification?
> * threads can take names, not sure if this is often used, should it be handled by run_as_thread? This is not as important as daemon because I think thread names can be set after start()
> * what are the semantics of the function's return value? None and it's basically ignored (as with regular target semantics)?
More information about the Python-ideas