Python基礎 多執行緒

2021-07-10 18:42:23 字數 2445 閱讀 5191

多執行緒在程式開發過程中特別重要,我們往往把一些耗時的操作在子執行緒中執行,這就是所謂的多執行緒了。

在c++11中,寫了一些關於多執行緒的部落格。

python也不例外,當然也要有多執行緒了。

python提供了兩個模組來實現多執行緒thread 和threading ,thread 有一些缺點,在threading 得到了彌補

thread

通過start_new_thread函式來開啟新的執行緒,位於thread模組中:

原型:

thread.start_new_thread ( function, args

[, kwargs] )

直接上**:

import thread

import time

# 為執行緒定義乙個函式

defprint_time

( threadname, delay):

count = 0

while count < 5:

time.sleep(delay)

count += 1

print

"%s: %s" % ( threadname, time.ctime(time.time()) )

# 建立兩個執行緒

try:

thread.start_new_thread( print_time, ("thread-1", 2, ) )

thread.start_new_thread( print_time, ("thread-2", 4, ) )

except:

print

"error: unable to start thread"

while

1: pass

threading

使用threading執行緒模組建立執行緒:

自定義乙個類繼承自threading.thread

import threading

import time

exitflag = 0

class

mythread

(threading.thread):

#繼承父類threading.thread

def__init__

(self, threadid, name, counter):

threading.thread.__init__(self)

self.threadid = threadid

self.name = name

self.counter = counter

defrun(self):

#把要執行的**寫到run函式裡面 執行緒在建立後會直接執行run函式

print

"starting " + self.name

print_time(self.name, self.counter, 5)

print

"exiting " + self.name

defprint_time

(threadname, delay, counter):

while counter:

if exitflag:

thread.exit()

time.sleep(delay)

print

"%s: %s" % (threadname, time.ctime(time.time()))

counter -= 1

# 建立新執行緒

thread1 = mythread(1, "thread-1", 1)

thread2 = mythread(2, "thread-2", 2)

# 開啟執行緒

thread1.start()

thread2.start()

print

"exiting main thread"

thread.getname()

thread.setname()

thread.name

用於獲取和設定執行緒的名稱。

thread.ident

獲取執行緒的識別符號。執行緒識別符號是乙個非零整數,只有在呼叫了start()方法之後該屬性才有效,否則它只返回none。

thread.is_alive()

thread.isalive()

判斷執行緒是否是啟用的(alive)。從呼叫start()方法啟動執行緒,到run()方法執行完畢或遇到未處理異常而中斷 這段時間內,執行緒是啟用的。

thread.join([timeout])

呼叫thread.join將會使主調執行緒堵塞,直到被呼叫執行緒執行結束或超時。引數timeout是乙個數值型別,表示超時時間,如果未提供該引數,那麼主調執行緒將一直堵塞到被調執行緒結束

Python基礎 多執行緒

多工可以由多程序完成,也可以由乙個程序內的多執行緒完成。我們前面提到了程序是由若干執行緒組成的,乙個程序至少有乙個執行緒。由於執行緒是作業系統直接支援的執行單元,因此,高階語言通常都內建多執行緒的支援,python也不例外,並且,python的執行緒是真正的posix thread,而不是模擬出來的...

python 多執行緒基礎

join 等待某執行緒結束在繼續執行 queue 儲存程序結果 執行緒鎖在cpython中存在gil,大家可以嘗試其他直譯器版本,可能就不會存在gil了 import threadingprint threading.active count 列印已啟用執行緒數print threading.enu...

Python多執行緒基礎學習

python多執行緒用法 1.函式式 呼叫thread模組的start new thread 方法來建立執行緒,例如 thread.start new thread function,args args是函式的引數列表,在python裡用元組表示,如 args1 args2 注意這裡引數必須存在,就...