gpt4 book ai didi

pygtk - Twisted/PyGTK 的简单非网络示例

转载 作者:行者123 更新时间:2023-12-01 04:17:29 31 4
gpt4 key购买 nike

当有人建议我考虑使用 Twisted 时,我正在努力让一些异步事件在 PyGTK 下工作。

我知道 Twisted 最初是一个网络框架,但它可以用于其他事情。但是,我见过的每个示例都涉及大量基于网络的代码。我希望看到一个将 Twisted 用于简单的 PyGTK 桌面应用程序的示例,而无需花费额外的精力来理解事物的网络方面。

那么:是否有使用 Twisted 创建 GTK (PyGTK) 应用程序并执行异步任务的干净、简单的教程或示例?

(是的,我见过 pbgtk2.py 。它没有注释,以网络为中心,对新手来说完全莫名其妙。)

更新:我用 glib.idle_add 列出了各种提示。/gtk.gdk.lock和 friend 在Windows下不能正常工作。这一切都在 pygtk list 上得到了推理。 - PyGTK 需要一些技巧才能在 Windows 下获得异步行为。

然而,我的观点仍然是,每当我提到在 PyGTK 中执行异步事件时,有人说“不要使用线程,使用 Twisted!”我想知道为什么以及如何。

最佳答案

扭曲执行是 pygtk 中的异步任务 uses functionsgobject.io_add_watch/glib.io_add_watchgobject.timeout_add/glib.timeout_add (加上其他一些,你可以在 gobject 和 glib module 中找到它们),所以如果你不需要网络,使用原始 pygtk 函数或扭曲没有太大区别。

另外,twisted 与 pygtk 的异步任务有相同的问题,twisted 使用与 pygtk 相同的循环,因此如果您执行一些阻塞任务,它会被阻塞!

最好的办法是使用 glib functions 之一基本上是为了处理这种情况。

我已经在应用程序中测试了 twisted+pygtk 窗口下的正确行为,但我避免做阻塞的东西(从大文件中读取的最大量,基本上使用 glib.idle_addglib.io_add_watch 的 block 每个 block ,在扭曲使用的意义上类似的东西)。

例如,我不确定使用 glib.io_add_watch 生成过程和处理标准输出。似乎行不通。我写了一个 article on my blog处理pygtk中异步进程的执行,虽然它可能取决于版本,但不太确定它是否适用于windows。

关于pygtk - Twisted/PyGTK 的简单非网络示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3183428/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com