python中如何对类的成员函数开启线程?

毕设驿站 论文问答 1

单独对某个函数开启线程是可以的,比如下面的代码:

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

回复

共1条回复 我来回复
  • 代码客栈
    这个人很懒,什么都没有留下~
    评论
    # -*- coding: utf-8 -*-
    import threading
    import thread
    import time
    
    
    class Test(object):
        def __init__(self):
            # threading.Thread.__init__(self)
            self._sName = "machao"
    
        def process(self):
            #args是关键字参数,需要加上名字,写成args=(self,)
            th1 = threading.Thread(target=Test.buildList, args=(self,))
            th1.start()
            th1.join()
    
        def buildList(self):
            while True:
                print "start"
                time.sleep(3)
    
    
    test = Test()
    test.process()
    
    0条评论

发表回复

登录后才能评论