Python入門學習 二 執行緒上

2021-06-26 13:17:00 字數 2623 閱讀 2767

# -*- coding: cp936 -*-

#多執行緒程式設計

import thread

def fun(n):

for i in range(n):

print i

thread.start_new_thread(fun,(9,));

thread.start_new_thread(fun,(9,));

thread.start_new_thread(fun,(9,));

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

def run(x,y):

for i in range(x,y):

print i

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

>>> ti.start()

'''

join方法:

如果乙個執行緒或者函式的執行過程中呼叫另乙個執行緒,並且待其完成操作之後才能執行,那麼可以呼叫join方法

import threading

import time

class mythread(threading.thread):

def __init__(self,id):

threading.thread.__init__(self)

self.id = id

def run(self):

x=0time.sleep(60)

print self.id

def func():

t.start()

for i in range(5):

print i

>>> t=mythread(2)

>>> func()01

234

輸出結果中沒有執行緒的輸出,func函式沒有等待執行緒完成。

將程式更改為

import threading

import time

class mythread(threading.thread):

def __init__(self,id):

threading.thread.__init__(self)

self.id = id

def run(self):

x=0time.sleep(60)

print self.id

def func():

t.start()

t.join()

for i in range(5):

print i

>>> t=mythread(3)

>>> func()30

1234

呼叫join方法,等待執行緒完成

檢視執行緒是否執行

import threading

import time

class mythread(threading.thread):

def __init__(self,id):

threading.thread.__init__(self)

self.id = id

def run(self):

x=0time.sleep(10)

print self.id

def func():

t.start()

print t.isalive()

>>> t=mythread(3)

>>> func()

true

>>> 3

當需要主線程退出時,不管子執行緒是否完成都隨主線程退出,則可以使用thread物件的setdaemon方法來設定。

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'

t1 = mythread('t1')

t2 = mythread('t2')

t2.setdaemon(true)

func1()

func2()

二 執行緒狀態

新建狀態 new 用new關鍵字建立乙個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態。就緒狀態 runnable 處於就緒狀態的執行緒已經具備了執行條件,但是還沒有被分配到cpu,處於 執行緒就緒佇列 等待系統為其分配cpu。就...

JAVA學習筆記 多執行緒(二)執行緒常用方法

thread類包含的方法 start 啟動執行緒 isalive 判斷執行緒當前是否正在執行 setpriority 設定優先順序 jion 使乙個執行緒等待另乙個執行緒結束 sleep mills long 指定執行緒休眠指定毫秒 yield 使執行緒暫停並允許執行其他程序 wait 和notif...

java多執行緒學習(二)執行緒的基本方法

sleep long millis 作用是讓當前執行緒休眠指定的毫秒,使當前執行緒進入阻塞狀態,期間會讓出cpu的資源,但不會釋放已獲得的鎖.到達指定時間後,執行緒會從阻塞狀態變成 可執行狀態,重新競爭cpu的資源 static void sleep long millis 這是thread類中的靜...