python 怎么很好地做到 GUI 和后台程序的协同?

2015-02-21 22:39:49 +08:00
 oursunny
我个人觉得是不是用多进程协同比较简单,协同方法有很多,大家有没有什么好的协同例子可以参考一下呢?谢谢大家!注:linux平台
4851 次点击
所在节点    Python
11 条回复
tkliuxing
2015-02-21 22:42:19 +08:00
啥样的后台程序?多进程我一般用XMLRPC通信,简单明了。
oursunny
2015-02-21 22:46:55 +08:00
@tkliuxing 音频处理的,根据不同的音频显示不同的GUI。GUI进程不能被阻塞。
oursunny
2015-02-21 22:49:56 +08:00
@tkliuxing 这种通信会造成GUI动画部分被阻塞吗?
billlee
2015-02-22 00:41:36 +08:00
这要看 GUI 是用什么库实现的吧
比如说用 PyQt/PySide 的时候,在工作线程里处理完成后直接通过 Qt 的 signal 通知 GUI 线程,完全透明
incompatible
2015-02-22 01:13:35 +08:00
这种要通过异步做啊
当需要调用后台程序时,不要在gui进程/线程中阻塞调用,而是新起进程/线程异步调用。异步调用结束后,再更新gui
zerh925
2015-02-22 05:26:52 +08:00
python 2.7 + wxpython 3.0
我之前做的一个项目,后台属于cpu密集型运算。即使让后台继承multithreading.Thread,还是会造成GUI阻塞,因为多线程还是使用同一个core干活。后来改成multiprocessing,将后台分配到不同的process,每个process都是不同core,可以调用系统监测看到。仅供参考。
skyline75489
2015-02-22 06:44:56 +08:00
异步 +1
ruoyu0088
2015-02-22 07:13:23 +08:00
我用zmq进行进程通信,在GUI线程中用gevent协程管理这些通信通道。

<amp-youtube data-videoid="YbnzOGMIz4Y" layout="responsive" width="480" height="270"></amp-youtube>
enotx
2015-02-22 14:04:33 +08:00
写qt的时候全靠qthread和pyqtsignal搞定
tkliuxing
2015-02-22 18:18:50 +08:00
@oursunny 进行RPC调用时开个线程或者协程好了。不过你的问题还需要再详细描述一下。参见5W1H http://wiki.woodpecker.org.cn/moin/5W1H
Wicked
2015-02-22 20:36:56 +08:00
pyQt召唤你

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/172102

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX