python proxy checker ,change to threaded version
Terry Reedy
tjreedy at udel.edu
Mon Dec 7 13:21:23 EST 2009
r0g wrote:
> The trick to threads is to create a subclass of threading.Thread, define
> the 'run' function and call the 'start()' method. I find threading quite
> generally useful so I created this simple generic function for running
> things in threads...
Great idea. Thanks for posting this.
> def run_in_thread( func, func_args=[], callback=None, callback_args=[] ):
> import threading
> class MyThread ( threading.Thread ):
> def run ( self ):
>
> # Call function
> if function_args:
> result = function(*function_args)
> else:
> result = function()
The check is not necessary. by design, f(*[]) == f()
Names do not match param names ;=)
>
> # Call callback
> if callback:
> if callback_args:
> callback(result, *callback_args)
> else:
> callback(result)
Ditto. g(x,*[]) == g(x)
def run(self):
result = func(*func_args) # matching run_in_thread param names
callback(result, *callback_args)
> MyThread().start()
This is one of the best uses I have seen for a nested class definition.
> Suggestions from hardcore pythonistas on how to my make run_in_thread
> function more elegant are quite welcome also :)
I shortened it, at least.
Terry Jan Reedy
More information about the Python-list
mailing list