免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2544 | 回复: 1
打印 上一主题 下一主题

python中如何对类的成员函数开启线程? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-01 00:11 |只看该作者 |倒序浏览
单独对某个函数开启线程是可以的,比如下面的代码:
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()

论坛徽章:
0
2 [报告]
发表于 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 = ())


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP