Python:使用守护程序线程在一段时间后终止多线程程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:使用守护程序线程在一段时间后终止多线程程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1741字,纯文字阅读大概需要3分钟。
内容图文
![Python:使用守护程序线程在一段时间后终止多线程程序](/upload/InfoBanner/zyjiaocheng/772/039782b3bff640908e8bc0f0098f9279.jpg)
我想实现一个程序,该程序将在运行一段时间后终止,并且使用ArgumentParser从命令行读取t.目前我有以下代码(省略一些细节):
def run():
parser = create_arg_parser()
args = parser.parse_args()
class_instance = MultiThreadClass(args.arg1, args.arg2)
class_instance.run()
if __name__ == '__main__':
run_thread = Thread(target=run)
run_thread.daemon = True
run_thread.start()
time.sleep(3.0)
该程序按预期工作(它在运行3秒后终止).但正如我之前提到的,运行时间(上面的代码片段中的3.0)应该从命令行输入(例如args.arg3 = 3.0)而不是硬编码.显然我不能直接把time.sleep(args.arg3).我想知道是否有任何方法可以解决我的问题?不使用守护程序线程的答案也欢迎!谢谢.
PS.如果我将参数解析代码放在run函数之外,如:
def run(args):
class_instance = MultiThreadClass(args.arg1, args.arg2)
class_instance.run()
if __name__ == '__main__':
parser = create_arg_parser()
args = parser.parse_args()
run_thread = Thread(target=run(args))
run_thread.daemon = True
run_thread.start()
time.sleep(args.arg3)
程序不会在args.arg3秒后终止,我对原因感到困惑.如果有人能够解释所有这些背后的魔力,我也将非常感激……非常感谢!
解决方法:
在第二个示例中,创建线程时,您应该只传递函数,并且args应该作为第二个参数.像这样:
Thread(target=run, args = (args.arg1, args.arg2))
因此,在第二个示例中,您实际在创建线程之前评估函数,并将None从run函数返回给Thread类.
另外,根据docs,当指定守护进程= True时:
The significance of this flag is that the entire Python program exits
when only daemon threads are left
这应该工作:
def run(arg1,arg2):
class_instance = MultiThreadClass(arg1, arg2)
class_instance.run()
if __name__ == '__main__':
parser = create_arg_parser()
args = parser.parse_args()
run_thread = Thread(target=run, args=(args.arg1, args.arg2))
run_thread.start()
time.sleep(args.arg3)
This帖子将帮助你开始使用Threads,而且我会阅读docs来更好地理解“魔术”.
内容总结
以上是互联网集市为您收集整理的Python:使用守护程序线程在一段时间后终止多线程程序全部内容,希望文章能够帮你解决Python:使用守护程序线程在一段时间后终止多线程程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。