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

单独对某个函数开启线程是可以的,比如下面的代码:importthreadingimportthreadimporttimedefdoWaiting():print'sta... 单独对某个函数开启线程是可以的,比如下面的代码:
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()
展开
 我来答
老夭来了
推荐于2017-11-27 · 知道合伙人软件行家
老夭来了
知道合伙人软件行家
采纳数:1806 获赞数:8100
2008年从事软件开发,拥有多年的python,php,linux工作经验,发布过多个python,php的开源项目。

向TA提问 私信TA
展开全部
# -*- 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()

看注释。


如果解决了您的问题请采纳!
如果未解决请继续追问

帐号已注销
2015-10-28 · TA获得超过2.3万个赞
知道小有建树答主
回答量:915
采纳率:96%
帮助的人:215万
展开全部
程序如下:
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()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式