python proxy checker ,change to threaded version
Rhodri James
rhodri at wildebst.demon.co.uk
Mon Dec 7 16:43:49 EST 2009
On Mon, 07 Dec 2009 18:21:23 -0000, Terry Reedy <tjreedy at udel.edu> wrote:
> 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=[]
>> ):
I'm might wary of having mutable defaults for parameters. They make for
the most annoying errors. Even though they're actually safe here, I'd
still write:
def run_in_thread(func, func_args=(), callback=None, callback_args=()):
out of sheer paranoia.
>> 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)
Neat, but I think you mean
if callback is not None:
callback(result, *callback_args)
for that last line.
>
>
>> MyThread().start()
>
> This is one of the best uses I have seen for a nested class definition.
Ditto!
--
Rhodri James *-* Wildebeest Herder to the Masses
More information about the Python-list
mailing list