Maybe I'm missing it, but in the original code, the line had

thread.start_new_thread(myfunction,("Thread No:1",2))

It has a single arg  ("Thread No:1",2) versus something like

thread.start_new_thread(myfunction,1, 2, ("Thread No:1",2))

But

def myfunction(string,sleeptime,*args):

clearly takes two args. I don't get how the single arg ("Thread No:1",
2) in start_new_thread() gets magically converted two arges, string
and sleeptime, before it reaches myfunction().

As John pointed out, the start_new_thread passes *args to your function. So you would define a your function:

  def myfunc(some_string, some_int):
    print "The string value:", some_string
    print "The int value", some_int

  thread.start_new_thread(myfunc, "some string", 42)

should print

  The string value: some string
  The int value: 42

because all the subsequent values after the function-handle/name get passed into the function when it gets called. As if the start_new_thread() function was defined as

  def start_new_thread(fn, *args, **kwargs):
    thread_magic_happens_here()
    result = fn(*args, **kwargs)
    return more_thread_magic_happens_here(result)

-tkc




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to