多线程测试

sanyawa 2018-03-02 01:43:44

import threading
import time
exitFlag = 0

class myThread (threading.Thread): #继承父类threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self): #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
print ("Starting " + self.name)
print_time(self.name, self.counter, 5)
print ("Exiting " + self.name)

def print_time(threadName, delay, counter):
while counter:
if exitFlag:
threading.Thread.exit()
time.sleep(delay)
print ("%s: %s" % (threadName, time.ctime(time.time())))
counter -= 1
# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
# 开启线程
thread1.start()
thread2.start()

print ("Exiting Main Thread")

以上代码是多线程的实例题目,能正常运行,但是我想把 print_time函数作为类的方法放进类里,并给函数参数增加了self,修改后的代码如下;但是就无法运行了,提示NameError: name 'print_time' is not defined,请问问题出在哪里?

import threading
import time
exitFlag = 0

class myThread (threading.Thread): #继承父类threading.Thread
def __init__(self, threadID, name, counter):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.counter = counter
def run(self): #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
print ("Starting " + self.name)
print_time(self, self.name, self.counter, 5)
print ("Exiting " + self.name)
def print_time(self, threadName, delay, counter): #增加self参数并缩进
global exitFlag #增加global引用全局变量
while counter:
if exitFlag:
threading.Thread.exit()
time.sleep(delay)
print ("%s: %s" % (threadName, time.ctime(time.time())))
counter -= 1

# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# 开启线程
thread1.start()
thread2.start()

print ("Exiting Main Thread")
...全文
245 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanyawa 2018-03-03
  • 打赏
  • 举报
回复
没想到这么简单
nieoding 2018-03-02
  • 打赏
  • 举报
回复

self.print_time(...)
oyljerry 2018-03-02
  • 打赏
  • 举报
回复
调用方式要改一下

 def run(self):                   #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数 
        print ("Starting " + self.name)
        print_time(self.name, self.counter, 5)
        print ("Exiting " + self.name)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧