Python Tech

探索Python多线程编程

本文研究利用Python中提供的threading模块,实现Python多线程编程的一些入门技巧。 MULTITHREADED 在多线程编程出现之前,程序是一个执行序列,按顺序在CPU中运行的,即使程序的子任务之间相互独立,也要按顺序执行。为了提高效率,能将各种本质上就是异步的子任务做并行处理的编程方式应运而生了,这就是多线程编程。 线程有时也被称为轻量级进程,具有开始、顺序执行、结束三部分。与进程不同,线程之间可以直接共享运行的结果,所以线程可以用一个指令指针来记录自己运行到什么地方,然后通过中断或是睡眠的方式,让步给其他线程,这种快速的切换就让使用者感觉程序是在并行执行了。Python解释器要实现多线程,也必须在执行多个线程的同时,保证在任意时刻,在解释器中运行的线程也只有一个。要实现这个目标依靠的是全局解释锁GIL,线程在运行前先设置一个GIL,运行结束后再将它解锁。 Python中主要使用threading模块来产生线程和锁,利用Queue模块在线程间进行通信。

Continue Reading
Python Tech

PyQT实现通知区域图标和对话气泡

目的: 软件运行时,在通知区域显示图标; 当有新任务时,显示对话气泡。 实现: 利用PyQT在系统的通知区域显示图标; 让Python程序循环执行。 首先来实现第一个功能——在通知区域显示图标和对话气泡。 需要制作的是:图标,点击图标弹出的菜单,菜单的行为,对话气泡,主窗口。需要的模块是systray_rc,在PyQT的范例中可以找到,安装后的目录是\Python目录\Lib\site-packages\PyQt4\examples\desktop\systray,复制systray_rc.py和systray_rc.pyc到开发目录下,新建一个tasktip.py,代码如下:

Continue Reading