所以我找到了一个显示
的例子import threading
from threading import Thread
def func1():
print 'Working'
def func2():
print 'Working'
if __name__ == '__main__':
Thread(target = func1).start()
Thread(target = func2).start()
这可行。
但是当我通常有一个具有该功能的对象时,它是如何工作的。 这是我通常使用的两个函数。
statusbar()
copyfrom(servername.strip())
如何将servername.strip()添加到下面?
Thread(target = statusbar).start()
Thread(target = copyfrom).start()
答案 0 :(得分:2)
您可以将参数传递给threading.Thread
,因此这应该有效:
Thread(target=statusbar).start()
Thread(target=copyfrom, args=(servername.strip(), )).start()
在我看来,这是最简单的选择。
答案 1 :(得分:1)
target
应该是一个函数,因此请定义您所需的拥有函数:
def doSomething():
copyfrom(servername.strip())
并将其交给Thread
。
Thread(target=doSomething).start()
如果您想在一行中完成,可以使用匿名函数:
Thread(target=lambda: copyfrom(servername.strip())).start()
正如cᴏʟᴅsᴘᴇᴇᴅ在他的回答中提到的那样,你也可以将回调的参数指定为元组:
Thread(target=copyfrom, args=(servername.strip(), )).start()
答案 2 :(得分:0)
使用lambda或local函数:
Thread(target = lambda: copyfrom(servername.strip())).start()
或
def thread_func():
copyfrom(servername.strip())
Thread(target = thread_func).start()
在python中你可以在函数中定义函数(本地函数,lambda也是这种函数),内部函数可以从它的父函数中访问名称。即使执行后仍保留原始功能 请记住,这将延长父母功能中对象的生命周期。所以:
def foo():
s = '... very long string ...'
def substr(a, b):
return s[a:b]
return substr
a = foo()
现在,您可以使用a
访问s
。但只要a
存在,s
也会a
继续引用substr
,其引用s
。