python threading模块多线程源码示例(一)
生活随笔
收集整理的這篇文章主要介紹了
python threading模块多线程源码示例(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用python模塊threading來編寫多線程程序的基本思想就是, 在threading.Thread類的基礎上派生出一個子類, ?將業務邏輯在該子類的run函數中實現, 創建該子類對象的線程池,并執行該子類對象的執行函數.
下面給出使用python中的threading模塊進行多線程編程的一個示例, 在源碼中,我們創建了4個線程的一個線程池和一個共享計數器, 然后讓每個線程搶占執行時,將該計數器增1, 然后休眠. 這里相當于給出了一個二維空間, 線程數是一維, 每個線程執行的總次數是另一維, 從下面的運行結果可以很方便地看出: 線程輪詢調度的情況.
注意這里對count的print輸出需要包含在互斥鎖內部,否則打印結果不對.
源碼實現:
#!/usr/bin/env python
#encoding: utf-8import threading
import time#入參是線程調用次數
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# 創建鎖mutex = threading.Lock()# 創建線程對象for x in xrange(0, num):threads.append(Test(10))# 啟動線程for t in threads:t.start()# 等待子線程結束for t in threads:t.join()
運行效果圖:
總結
以上是生活随笔為你收集整理的python threading模块多线程源码示例(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多线程端口扫描程序
- 下一篇: 利用python开源库制作并验证torr