Python學習05 多執行緒程式設計

2021-06-28 02:16:55 字數 2998 閱讀 1648

昨天學習的多執行緒,今天總結一下,鞏固一下

python中提供thread 和 threading模組對多執行緒提供支援,其中threading模組是對thread模組的封裝,多數情況下使用threading來進行多執行緒程式設計

1.第一種使用thread我沒除錯成功,反正也不推薦這種方式,乾脆不寫了

2.threading 方式 也有兩種做法

<1> 繼承threading.thread 過載run方法

#!/usr/bin/python

'''created on 2015-1-6

@author: huangpeng03

'''import threading

class mythread(threading.thread):

def __init__(self,num):

threading.thread.__init__(self)

self.num = num

def run(self):

print 'i am ',self.num

if __name__ == '__main__':

t1 = mythread(1)

t2 = mythread(2)

t3 = mythread(3)

t1.start()

t2.start()

t3.start()

#!/usr/bin/python

'''created on 2015-1-6

@author: huangpeng03

'''import threading

def run(x,y):

for i in range(x,y):

print i

if __name__ == '__main__':

t1 = threading.thread(target=run,args=(15,20))

t1.start()

3.join方法

如果乙個執行緒或者函式在執行過程中呼叫另外乙個執行緒,並且其完成後才能執行,這時就要用到.join()方法了

具體如下:

#!/usr/bin/python

'''created on 2015-1-6

@author: huangpeng03

'''import threading

import time

class mythread(threading.thread):

def __init__(self,id):

threading.thread.__init__(self)

self.id = id

def run(self):

x = 0

print x

time.sleep(10)

print self.id

def func():

t.start()

t.join()

for i in range(5):

print i

if __name__ == '__main__':

t = mythread(2)

func()

結果是:02

0123

44.isalive方法用來判斷執行緒是否正在執行

5.還有一些設定、更改執行緒名的方法

#!/usr/bin/python

'''created on 2015-1-6

@author: huangpeng03

'''import threading

import time

class mythread(threading.thread):

def __init__(self,threadname):

threading.thread.__init__(self,name=threadname)

def run(self):

print self.getname()

if __name__ == '__main__':

t1 = mythread('t1')

print t1.getname()

t1.setname('t')

print t1.getname()

6.setdaemon 方法   在指令碼執行過程中有乙個主線程,如果主線程又創後再建了乙個子執行緒,那麼當主線程退出時,會檢驗子執行緒是否完成,如果子執行緒未完成,則主線程會等待子執行緒完成後再退出。當需要主線程退出時,不管子執行緒是否完成都隨主線程退出,則看見惡意使用thread物件的serdaemon方法來設定。

#!/usr/bin/python

'''created on 2015-1-6

@author: huangpeng03

'''import threading

import time

class mythread(threading.thread):

def __init__(self,threadname):

threading.thread.__init__(self,name=threadname)

def run(self):

time.sleep(5)

print self.getname()

def func1():

t1.start()

print 'func1 done'

def func2():

t2.start()

print 'func2 done'

if __name__ == '__main__':

t1 = mythread('t1')

t2 = mythread('t2')

t2.setdaemon(true)

func1()

func2()

Python高階 多執行緒 05 執行緒

併發 時間段內多個程式輪流執行 並行 同乙個時刻不同cpu同時執行 執行緒 程式執行中,執行 的乙個分支。每個執行至少都有乙個執行緒.執行緒是作業系統排程資源的基礎單位 1.建立 import threading 方法 thread group 執行緒組,目前只能使用none target 執行的目...

多執行緒學習05 執行緒狀態

控制線程的狀態 啟動執行緒 void start 進入就緒狀態 執行狀態.當執行緒任務執行完畢,自動進入死亡狀態。阻塞 暫停 執行緒 void sleepuntildate nsdate date void sleepfortimeinterval nstimeinterval ti 進入阻塞狀態 ...

多執行緒05 執行緒同步

1 執行緒同步 2 執行緒不安全案例 public class testthreadsynchronized class ticketwindow implements runnable private void buy try catch interruptedexception e system...