青原落枫 发表于 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 = ())


   
页: [1]
查看完整版本: python中如何对类的成员函数开启线程?