求Pyqt 函数threading.Thread,print()阻塞解决方法,,我现在使用Pyqt中Ph
求Pyqt 函数threading.Thread,print()阻塞解决方法,,我现在使用Pyqt中Ph
我现在使用Pyqt中Phonon写一个简单的音乐播放程。 我想在播放的同时打印音乐当前的时间。
def check_if_delay(self): while True: print(self.m_media.currentTime(),end=' ') time.sleep(2)def play(self, index): self.delayedInit() self.m_media.setCurrentSource(Phonon.MediaSource(index)) self.check_thread = threading.Thread(target=self.check_if_delay) self.check_thread.setDaemon(True) self.check_thread.start() self.m_media.play()
当我player.play(index)时,音乐能播放,但是却没有打印。 当我强制中断音乐播放时,需要打印的时间却有都出来了。 请问各位改怎么实现边播放边打印时间。
你有两个方案,第一,不用多线程,因为显示线程一定在主线程里,子线程获取数据了也没办法直接往显示线程里写,你可以设置一个1s的timer,在timeout的槽里做显示第二,如果你使用多线程的话,请用信号和槽来进行数据同步,将子线程里的数值发个信号出来传递到主线程的槽里完成更新
这并不是block的问题,而是你需要flush stdout。修改方法是在你的代码的check_if_play中,print语句之后,time.sleep语句之前,加入一句
sys.stdout.flush()
即可。
编橙之家文章,
相关内容
- 想用Python与个判断Zip压缩是否成功的脚本求思路,pyt
- python2.7无法输出print是因为我用了reload(sys)吗?,python2
- 求大牛帮优化一段python代码关于循环里重复select相关操
- Python模拟登录知乎,遇到403: Forbidden问题,pythonforbidden
- 循环执行函数时间时区准确性很重要吗?,时区准确性
- python splinter奇葩问题No module named browser,pythonsplinter,最
- Python如何实现对齐输出,python实现对齐,输出格式:aa
- python菜鸟最头疼的编码问题又来了,ord函数对汉字进行
- 用python watchdog监视目录可行性如何,pythonwatchdog,有人用
- Python3.0版本做web可以吗?,python3.0版本做web,在群里聊天
评论关闭