多執行緒在程式開發過程中特別重要,我們往往把一些耗時的操作在子執行緒中執行,這就是所謂的多執行緒了。
在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 注意這裡引數必須存在,就...