[英]How to run two functions at the same time with an object?
所以我发现一个例子,显示
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()
这可行。
但是当我通常有一个带有函数的对象时,它是如何工作的。 这是我通常使用的2个功能。
statusbar()
copyfrom(servername.strip())
如何在下面添加servername.strip()?
Thread(target = statusbar).start()
Thread(target = copyfrom).start()
您可以将参数传递给threading.Thread
,因此应该可以:
Thread(target=statusbar).start()
Thread(target=copyfrom, args=(servername.strip(), )).start()
我认为这是最简单的选择。
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()
使用lambda或局部函数:
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.