单独对某个函数开启线程是可以的,比如下面的代码:import threadingimport threadimport timedef 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 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()
2 回答
aluckdog
TA贡献1847条经验 获得超7个赞
12345678910111213141516171819202122232425 | # -*- 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() |
看注释。
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
程序如下:
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()
添加回答
举报
0/150
提交
取消