108 lines
2.3 KiB
Python
108 lines
2.3 KiB
Python
|
||
import threading
|
||
from queue import Queue #Thread 無法回傳值,所以要使用 Queue.put() 將要傳回的值存入 Queue,再用 Queue.get() 取出
|
||
import time
|
||
import os
|
||
|
||
# ----------------------------------------範例1------------------------------
|
||
# A報數
|
||
def A_Count_off():
|
||
for i in range(0,5):
|
||
print(f'A : {i}')
|
||
time.sleep(0.5)
|
||
|
||
|
||
# B報數
|
||
def B_Count_off():
|
||
for i in range(5,10):
|
||
print(f'B : {i}')
|
||
time.sleep(0.5)
|
||
|
||
|
||
|
||
thread_list=[A_Count_off,B_Count_off]
|
||
thread_num =[]
|
||
# for i in range(0,len(thread_list)):
|
||
# thread_num.append(threading.Thread(target=thread_list[i]))
|
||
#
|
||
# for i in range(0,len(thread_num)):
|
||
# thread_num[i].start()
|
||
# # thread_num[i].join()
|
||
#
|
||
# for i in range(0,len(thread_num)):
|
||
# thread_num[i].join()
|
||
|
||
|
||
|
||
# ----------------------------------------範例2------------------------------
|
||
|
||
def Count_off(code_name):
|
||
print('process {} '.format(os.getpid()))
|
||
print('thread {} '.format(threading.current_thread().name))
|
||
for i in range(0,5):
|
||
print(f'{code_name} : {i}')
|
||
time.sleep(0.5)
|
||
|
||
|
||
thread_name_list=["A","B","C","D"]
|
||
|
||
thread_list=[]
|
||
# for i in range(0,len(thread_name_list)):
|
||
# thread_list.append(threading.Thread(target=Count_off,args=thread_name_list[i]))
|
||
# for i in range(0,len(thread_list)):
|
||
# thread_list[i].start()
|
||
# for i in range(0,len(thread_list)):
|
||
# thread_list[i].join()
|
||
|
||
|
||
|
||
# ----------------------------------------範例3------------------------------
|
||
|
||
class Thread_class(threading.Thread):
|
||
def __init__(self,code_name):
|
||
threading.Thread.__init__(self)
|
||
self.code_name = code_name
|
||
|
||
def run(self):
|
||
print('process {} '.format(os.getpid())) # 查看進程
|
||
print('thread {} '.format(threading.current_thread().name)) # 查看線程
|
||
for i in range(0,5):
|
||
print(f'{self.code_name} : {i}')
|
||
time.sleep(0.5)
|
||
def test_return(self):
|
||
return(f'{self.code_name}=END')
|
||
|
||
|
||
|
||
thread_name_list=["A","B","C","D"]
|
||
thread_list=[]
|
||
for i in range(0,len(thread_name_list)):
|
||
thread_list.append(Thread_class(thread_name_list[i]))
|
||
for i in range(0,len(thread_list)):
|
||
thread_list[i].start()
|
||
for i in range(0,len(thread_list)):
|
||
thread_list[i].join()
|
||
|
||
for i in range(0,len(thread_list)):
|
||
print(thread_list[i].test_return())
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|