python – 在函数内声明函数以线程化良好的编程风格?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在函数内声明函数以线程化良好的编程风格?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1616字,纯文字阅读大概需要3分钟。
内容图文
![python – 在函数内声明函数以线程化良好的编程风格?](/upload/InfoBanner/zyjiaocheng/724/aea8648298334f32935e6f4b8d612ab8.jpg)
我在PyQT4程序中有以下代码用于click处理程序:
def click_btn_get_info(self):
task = self.window.le_task.text()
self.statusBar().showMessage('Getting task info...')
def thread_routine(task_id):
order = self.ae.get_task_info(task_id)
if order:
info_str = "Customer: {email}\nTitle: {title}".format(**order)
self.window.lbl_order_info.setText(info_str)
self.statusBar().showMessage('Done')
else:
self.statusBar().showMessage('Authentication: failed!')
thread = threading.Thread(target=thread_routine, args=(task,))
thread.start()
在线程中使用函数声明函数是一个好习惯吗?
解决方法:
一般来说,是的,这是完全合理的.但是,创建单独方法(或者,对于顶级代码,单独的函数)的替代方案也是完全合理的.创建一个Thread子类也是如此.所以,没有规则说要总是做三个中的一个;有不同的情况,每一个似乎比其他情况更合理,但这些情况之间有重叠,所以它通常是一个判断调用.
正如Maxime指出的那样,您可能希望使用Qt的线程,而不是本机Python线程.特别是因为您想要在GUI对象上调用方法. Qt文档中的Qt文档文章Threads, Events and QObjects为您提供了概述(尽管来自C,而不是Python,观点).如果你使用QThread而不是线程.线程,使用OO方法更常见 – 定义QThread的子类并覆盖其run方法而不是定义一个函数,这使你的问题没有实际意义.
但是如果你坚持使用Python线程,这就是我的决定.
专业单独的方法:
>您在类方法而不是函数中执行此操作,并且您要与新线程共享的唯一状态是self.
>非平凡代码,比嵌入的函数更长.
专业本地功能:
>非常具体的信息按钮回调;没有人会想要打电话给它.
我可能会把它作为一种方法,但我不会抱怨别人的代码使它成为一个本地函数.
在不同的情况下 – 例如,如果线程需要访问没有业务属于对象的局部变量,或者如果它是一个简单的函数,我可以写为内联lambda,或者如果这是一个顶级函数分享全局而不是分享自我的方法,我会走向另一个方向.
内容总结
以上是互联网集市为您收集整理的python – 在函数内声明函数以线程化良好的编程风格?全部内容,希望文章能够帮你解决python – 在函数内声明函数以线程化良好的编程风格?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。