python執行緒的幾種建立方式

2022-01-31 15:51:19 字數 1814 閱讀 4514

python3 執行緒中常用的兩個模組為:

import threading

from time import sleep,ctime

def sing():

for i in range(3):

print("正在唱歌...%d"%i)

sleep(1)

def dance():

for i in range(3):

print("正在跳舞...%d"%i)

sleep(1)

if __name__ == '__main__':

print('---開始---:%s'%ctime())

t1 = threading.thread(target=sing)

t2 = threading.thread(target=dance)

t1.start()

t2.start()

#sleep(5) # 遮蔽此行**,試試看,程式是否會立馬結束?

print('---結束---:%s'%ctime())

"""輸出結果:

---開始---:sat aug 24 08:44:21 2019

正在唱歌...0

正在跳舞...0---結束---:sat aug 24 08:44:21 2019

正在唱歌...1

正在跳舞...1

正在唱歌...2

正在跳舞...2

"""

說明:主線程會等待所有的子執行緒結束後才結束

為了讓每個執行緒的封裝性更完美,所以使用threading模組時,往往會定義乙個新的子類class,只要繼承threading.thread就可以了,然後重寫run方法。

import threading

import time

class mythread(threading.thread):

def run(self):

for i in range(3):

time.sleep(1)

msg = "i'm "+self.name+' @ '+str(i) #name屬性中儲存的是當前執行緒的名字

print(msg)

if __name__ == '__main__':

t = mythread()

t.start()

"""輸出結果:

i'm thread-5 @ 0

i'm thread-5 @ 1

i'm thread-5 @ 2

"""

from concurrent.futures import threadpoolexecutor

import time

import os

def sayhello(a):

for i in range(10):

time.sleep(1)

print("hello: " + a)

def main():

seed = ["a", "b", "c"]

# 最大執行緒數為3,使用with可以自動關閉執行緒池,簡化操作

with threadpoolexecutor(3) as executor:

for each in seed:

# map可以保證輸出的順序, submit輸出的順序是亂的

executor.submit(sayhello, each)

print("主線程結束")

if __name__ == '__main__':

main()

建立執行緒的幾種方式

thread,runnable,callable runnable和callable的區別是,1 callable規定的方法是call runnable規定的方法是run 2 callable的任務執行後可返回值,而runnable的任務是不能返回值得 3 call方法可以丟擲異常,run方法不可以...

建立執行緒的幾種方式

class a int operator int n void foo int x int main 6 lambda表示式 thread t7 a f,a,8,w 傳遞a的拷貝的成員函式給子執行緒 thread t8 a f,a,8,w 傳遞a的位址的成員函式給子執行緒 futurefu asyn...

建立執行緒的幾種方式

建立執行緒有四種方式 1.繼承thread類 public class mythread00 extends thread public static void main string args 2.實現runnable介面 public class mythread01 implements ru...