Python threading模块中getName()方法出现删除线的原因是什么?
问题触发原因
getName()方法从Python 3.10版本开始被正式弃用,编辑器的删除线提示是在标注该API属于废弃状态,后续Python版本可能会完全移除该方法,不推荐继续使用。- 除此之外你提供的代码还有两处需修复的问题:
- 代码中部分位置调用的
currentthread()属于拼写错误,正确写法是current_thread(),缺少中间的下划线,运行时会直接抛出属性错误 - 代码开头没有导入
threading模块,运行前需要补全导入语句
- 代码中部分位置调用的
修复方案
替换废弃API
getName()的替代方案是直接访问线程对象的name属性,对应的原setName(xxx)方法可以替换为给name属性直接赋值:
# 旧写法(已废弃) threading.current_thread().getName() # 新写法(官方推荐) threading.current_thread().name
修复后的完整代码
import threading import time def functionOne() : print(threading.current_thread().name + ' is starting \n') time.sleep(2) print(threading.current_thread().name + ' is exiting \n') return def functionTwo(): print(threading.current_thread().name + ' is starting \n') time.sleep(2) print(threading.current_thread().name + ' is exiting \n') return def functionThree(): print(threading.current_thread().name + ' is starting \n') time.sleep(2) print(threading.current_thread().name + ' is exiting \n') return if __name__ == "__main__": t1 = threading.Thread(name='functionOne',target=functionOne) t2 = threading.Thread(name='functionTwo',target=functionTwo) t3 = threading.Thread(name='functionThree',target=functionThree) t1.start() t2.start() t3.start()
内容的提问来源于stack exchange,提问作者Alvan D
相关产品推荐
相关产品推荐

