python threading模块多线程源码示例(一)
生活随笔
收集整理的這篇文章主要介紹了
python threading模块多线程源码示例(一)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用python模塊threading來編寫多線程程序的基本思想就是, 在threading.Thread類的基礎(chǔ)上派生出一個(gè)子類, ?將業(yè)務(wù)邏輯在該子類的run函數(shù)中實(shí)現(xiàn), 創(chuàng)建該子類對(duì)象的線程池,并執(zhí)行該子類對(duì)象的執(zhí)行函數(shù).
下面給出使用python中的threading模塊進(jìn)行多線程編程的一個(gè)示例, 在源碼中,我們創(chuàng)建了4個(gè)線程的一個(gè)線程池和一個(gè)共享計(jì)數(shù)器, 然后讓每個(gè)線程搶占執(zhí)行時(shí),將該計(jì)數(shù)器增1, 然后休眠. 這里相當(dāng)于給出了一個(gè)二維空間, 線程數(shù)是一維, 每個(gè)線程執(zhí)行的總次數(shù)是另一維, 從下面的運(yùn)行結(jié)果可以很方便地看出: 線程輪詢調(diào)度的情況.
注意這里對(duì)count的print輸出需要包含在互斥鎖內(nèi)部,否則打印結(jié)果不對(duì).
源碼實(shí)現(xiàn):
#!/usr/bin/env python
#encoding: utf-8import threading
import time#入?yún)⑹蔷€程調(diào)用次數(shù)
class Test(threading.Thread):def __init__(self, num):threading.Thread.__init__(self)self._run_num = numdef run(self):global count, mutexthreadname = threading.currentThread().getName()for x in xrange(0, int(self._run_num)):mutex.acquire()print threadname, x, countcount = count + 1mutex.release()time.sleep(1)if __name__ == '__main__':global count, mutexthreads = []num = 4count = 1# 創(chuàng)建鎖mutex = threading.Lock()# 創(chuàng)建線程對(duì)象for x in xrange(0, num):threads.append(Test(10))# 啟動(dòng)線程for t in threads:t.start()# 等待子線程結(jié)束for t in threads:t.join()
運(yùn)行效果圖:
總結(jié)
以上是生活随笔為你收集整理的python threading模块多线程源码示例(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多线程端口扫描程序
- 下一篇: 利用python开源库制作并验证torr