猿问

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()

UYOU
浏览 935回答 2
2回答

aluckdog

12345678910111213141516171819202122232425# -*- coding: utf-8 -*-import threadingimport threadimport 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()看注释。

qq_遁去的一_1

程序如下:import threadingimport threadimport timeclass 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()
随时随地看视频慕课网APP

相关分类

Python
我要回答