主题:了解Python多线程的创建程序
Python多线程在程序设计中自由重要的地位,在服务器deamon程序方面更为重要,但是不论在那种系统,Python多线程调度的开销比其他要开的很多。如果你想在此方面有更好的了解,你可以浏览以下的这篇文章。希望你有所收获。
Python可以方便地支持多线程。可以快速创建线程、互斥锁、信号量等等元素,支持线程读写同步互斥。美中不足的是,Python多线程的运行在Python虚拟机上,创建的多线程可能是虚拟的线程,需要由Python虚拟机来轮询调度,这大大降低了Python多线程的可用性。希望高版本的Python可以解决这个问题,发挥多CPU的最大效率。网上有些朋友说要获得真正多CPU的好处,有两种方法:
1.可以创建多个进程而不是线程,进程数和cpu一样多。
2.使用Jython 或 IronPython,可以得到真正的多线程。
闲话少说,下面看看Python如何建立线程
Python线程创建
需要关注threading.Thread.join(th)
或者th.join()
如果你可以对要处理的数据进
下面讲讲如何创建互斥锁创建锁
最后,模拟一个公交地铁IC卡缴车费的多线程程序,有10个读卡器,每个读卡器收费器每次扣除用户一块钱进入总账中,每读卡器每天一共被刷10000000次。账户原有100块。所以最后的总账应该为10000100。先不使用互斥锁来进行锁定(注释掉了锁定代码),看看后果如何即可。
Python可以方便地支持多线程。可以快速创建线程、互斥锁、信号量等等元素,支持线程读写同步互斥。美中不足的是,Python多线程的运行在Python虚拟机上,创建的多线程可能是虚拟的线程,需要由Python虚拟机来轮询调度,这大大降低了Python多线程的可用性。希望高版本的Python可以解决这个问题,发挥多CPU的最大效率。网上有些朋友说要获得真正多CPU的好处,有两种方法:
1.可以创建多个进程而不是线程,进程数和cpu一样多。
2.使用Jython 或 IronPython,可以得到真正的多线程。
闲话少说,下面看看Python如何建立线程
Python线程创建
需要关注threading.Thread.join(th)
或者th.join()
如果你可以对要处理的数据进
class Thread( group=None, target=None, name=None, args=(),
kwargs={})
下面讲讲如何创建互斥锁创建锁
最后,模拟一个公交地铁IC卡缴车费的多线程程序,有10个读卡器,每个读卡器收费器每次扣除用户一块钱进入总账中,每读卡器每天一共被刷10000000次。账户原有100块。所以最后的总账应该为10000100。先不使用互斥锁来进行锁定(注释掉了锁定代码),看看后果如何即可。
-
....
使用锁 -
for ... :
#锁定,从下一句代码到释放前互斥访问 -
g_mutex.acquire()
a_account.deposite(1) - #释放
-
g_mutex.release()
g_mutex = threading.Lock()