python模組學習 多執行緒處理

2021-06-18 22:16:13 字數 2056 閱讀 9468

在介紹

thread

之前,先看一段**,猜猜程式執行完成之後,在控制台上輸出的結果是什麼?

import thread, time

count = 0

def threadtest():

global count

for i in xrange(10000):

count += 1

for i in range(10):

thread.start_new_thread(threadtest, ())

time.sleep(3)

print count

輸出結果:3018

thread.start_new_thread ( function , args [ , kwargs ] )函式將建立乙個新的執行緒,並返回該執行緒的識別符號(識別符號為整數)。引數 function 表示執行緒建立之後,立即執行的函式,引數 args 是該函式的引數,它是乙個元組型別;第二個引數 kwargs 是可選的,它為函式提供了命名引數字典。函式執行完畢之後,執行緒將自動退出。如果函式在執行過程中遇到未處理的異常,該執行緒將退出,但不會影響其他執行緒的執行。 下面是乙個簡單的例子:

import thread, time

def threadfunc(a, b, c, d):

print time.strftime('%h:%m:%s', time.localtime()), a

time.sleep(1)

print time.strftime('%h:%m:%s', time.localtime()), b

time.sleep(1)

print time.strftime('%h:%m:%s', time.localtime()), c

time.sleep(1)

print time.strftime('%h:%m:%s', time.localtime()), d

time.sleep(1)

thread.start_new_thread(threadfunc, (1, 2, 3, 4))

time.sleep(4)

print time.strftime('%h:%m:%s', time.localtime()), 'over'

thread.exit ()結束當前執行緒。呼叫該函式會觸發 systemexit 異常,如果沒有處理該異常,執行緒將結束。

thread.get_ident ()返回當前執行緒的識別符號,識別符號是乙個非零整數。

thread.allocate_lock() 

#建立乙個瑣物件

lock.acquire ( [ waitflag ] )

獲取瑣。函式返回乙個布林值,如果獲取成功,返回 true ,否則返回 false 。引數 

waitflag 

的預設值是乙個非零整數,表示如果瑣已經被其他執行緒占用,那麼當前執行緒將一直等待,只到其他執行緒釋放,然後獲取訪瑣。如果將引數 waitflag 置為 0 ,那麼當前執行緒會嘗試獲取瑣,不管瑣是否被其他執行緒占用,當前執行緒都不會等待.

lock.locked()判斷瑣是否被占用。

lock.release()釋放所占用的瑣

再一次重新編寫剛開始的程式,我們給執行緒加上鎖,**如下:

import thread, time

count = 0

lock = thread.allocate_lock()

def threadtest():

global count, lock

lock.acquire()

print lock.locked()

for i in xrange(1000):

count += 1

lock.release()

for i in range(10):

thread.start_new_thread(threadtest, ())

time.sleep(3)

print count

則執行結果:10*1000 = 10000

python多執行緒模組 threading使用方法

先來看這段 import threading import time def worker print worker time.sleep 1 return for i in xrange 5 t threading.thread target worker t.start 這段 就使用了多執行緒,...

python多執行緒模組threading學習

本文主要介紹threading模組的使用。1.建立乙個threading.thread類的物件,並在初始化函式 init 中傳入可呼叫物件作為執行目標。初始化函式原型以下是threading.thread類的初始化函式原型 definit self,group none,target none,na...

Python多執行緒 threading模組

用threading模組,可以實現python多執行緒程式設計。import threading import time def video secs for i in range secs print 邊看 操.d i time.sleep 1 def dance secs for i in ra...