Chinaunix

标题: python中如何对类的成员函数开启线程? [打印本页]

作者: 青原落枫    时间: 2015-03-01 00:11
标题: 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()
作者: cuteorange    时间: 2015-03-01 12:07
回复 1# 青原落枫


        def process(self):
                th1 = threading.Thread(target = Test.buildList , (self ,))
改成

        def process(self):
                th1 = threading.Thread(target = self.buildList , args = ())


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2