首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyGTK非阻塞

PyGTK非阻塞
EN

Stack Overflow用户
提问于 2011-09-16 02:04:59
回答 3查看 723关注 0票数 1

有没有办法在执行一些昂贵的操作时不阻塞PyGTK?我知道线程可以工作,但它需要大量的代码和设置。

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-16 02:16:24

在PyGTK中设置后台线程是not all that difficult

票数 3
EN

Stack Overflow用户

发布于 2011-09-22 15:46:06

在pygtk中,线程并不是一个好的选择。只需通过执行以下操作来检查主循环中的事件,并让它完成自己的工作:

代码语言:javascript
复制
while my_operation_running:

    <my code>

    while gtk.events_pending():
        gtk.main_iteration()

或者调整您昂贵的操作,使其可以使用

代码语言:javascript
复制
glib.idle_add(function)

每次主循环没有事情要做时,它会调用" function ",只要确保function跟踪它的进程,并且在每次调用中只进行一次迭代即可。

票数 1
EN

Stack Overflow用户

发布于 2011-09-27 17:07:45

避免使用线程,它们在PyGTK中根本不能很好地工作。一些替代方案:

  • 执行IO/网络操作时,使用glib.io_add_watch()
  • 将操作移动到单独的进程,并使用glib.spawn_async()

与其通信

Twisted是一个很棒的联网类库,它是完全非阻塞的,并且可以很好地与PyGTK主循环集成,请考虑使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7435419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档