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