免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2215 | 回复: 6

multiprocessing和pyside问题 [复制链接]

论坛徽章:
0
发表于 2012-04-14 13:26 |显示全部楼层
本帖最后由 anonymous0502 于 2012-04-14 13:35 编辑

请教各位高手:
如何在multiprocessing子进程和pyside图形界面应用程序间共享数据啊?
试了用Manager().dict()和Value()都不行,程序直接崩溃了。
非常头大

直接传变量(比如int类型的变量)的方式也不行

论坛徽章:
0
发表于 2012-05-10 07:50 |显示全部楼层
回复 1# anonymous0502

代码有恶不贴,只好继续头大
试过普通的multiprocessing之间传数据么?先把问题简化一下
   

论坛徽章:
0
发表于 2012-05-10 08:09 |显示全部楼层
本帖最后由 106033177 于 2012-05-10 08:10 编辑
anonymous0502 发表于 2012-04-14 13:26

直接传变量(比如int类型的变量)的方式也不行

你知不知道什么叫进程间通讯?
http://docs.python.org/library/m ... s-between-processes

论坛徽章:
0
发表于 2012-05-10 09:11 |显示全部楼层
本帖最后由 anonymous0502 于 2012-05-10 09:38 编辑

我的demo在这里:
http://www.python-forum.org/pyth ... php?f=3&t=33795

进程间通信的方式已经试了几种了,那些方式用在multiprocessing之间是可以的,但是用在pyside gui application和multiprocessing之间没有效果,不知道问题在哪里。
楼上两位有空可以帮看看demo问题,多谢。

不过我的实际应用我通过变通的方式解决了

论坛徽章:
0
发表于 2012-05-10 10:40 |显示全部楼层
回复 4# anonymous0502
去掉startlog函数,子进程创建直接写在main()里面,效果大概是附件这样

   
mp.JPG

论坛徽章:
0
发表于 2012-05-10 12:25 |显示全部楼层
本帖最后由 anonymous0502 于 2012-05-10 13:33 编辑

回复 5# 106033177


不是你说的这样就改这么点就行了吧?

这个demo的问题其实是我更新gui界面的方式不对,不能在子线程中操作gui主界面。换成emit信号的方式程序就不会随机崩溃了,也可以在mp.process和pyside application之间共享变量了。正好前两天看了几个pyside自定义信号的例子。刚才照搬过来,已经可以通过pyside界面显示子进程处理进度了。所做的修改只是把原来在子线程中操作gui界面的方式改成emit信号,其他的基本都没动(用的mp.Value),这样就行了。那个demo我也写得乱七八糟,就不把我修改的重贴在这里了。{:2_166:}

另外你的截图用的好像是另一种进度条显示吧,请问这种样式的进度条是需要设置哪个属性?这个属性我找了好久也没找到。

论坛徽章:
0
发表于 2012-05-10 13:15 |显示全部楼层
还是表示感谢,让我今天把这个程序修改成能正确运行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP