问题描述
- python中如何对类的成员函数开启线程?
-
单独对某个函数开启线程是可以的,比如下面的代码:
import threading
import thread
import time
def doWaiting():
print 'start waiting:', time.strftime('%H:%M:%S')
time.sleep(3)
print 'stop waiting', time.strftime('%H:%M:%S')
thread1 = threading.Thread(target = doWaiting)
thread1.start()
time.sleep(1) #确保线程thread1已经启动
print 'start join'
thread1.join() #将一直堵塞,直到thread1运行结束。
print 'end join'但是对类的成员函数开启线程,程序报错:
th1 = threading.Thread(target = Test.buildList , (self ,))
SyntaxError: non-keyword arg after keyword arg程序如下:
import threading
import thread
import time
class Test(object):
def init(self):
#threading.Thread.__init__(self)
self._sName = "machao"def process(self): th1 = threading.Thread(target = Test.buildList , (self ,)) th1.start() th1.join() def buildList(self): while True: print "start" time.sleep(3)
test = Test()
test.process()
解决方案
target = self.buildList
要用self而不是test
时间: 2024-10-31 23:33:34