程序、守護程序、訊息佇列
'''
#程序:程序中會有執行緒(主線程),cpu會排程執行緒,程序是為了分配資源
'''import multiprocessing, time
def show():
for i in range(5):
print('show')
time.sleep(0.2)
def info():
for i in range(5):
print('info')
time.sleep(0.2)
if __name__ == '__main__':
ft = multiprocessing.process(target=show)
#sc = multiprocessing.process(target=info)
#設定守護程序
ft.daemon = true
ft.start()
#sc.start()
time.sleep(0.3)
#守護程序,讓子程序終止,效果同ft.daemon = true
ft.terminate()
#主程序也會等待子程序結束後才結束
print(multiprocessing.current_process())
#程序之間不能共享全域性變數
my_list =
def add_data():
for i in range(3):
print(i)
time.sleep(0.3)
print(my_list)
def read_data():
print('read', my_list)
if __name__ == '__main__':
add_m = multiprocessing.process(target=add_data)
read_m = multiprocessing.process(target=read_data)
add_m.start()
#程序等待,後面的**要等這個程序執行完畢以後才執行
add_m.join()
read_m.start() #結果為
#程序之間通訊,通過佇列
import multiprocessing, time
#建立佇列
queue = multiprocessing.queue(3)
#新增queue.put(1)
queue.put(2)
queue.put(3)
#queue.put(4)#如果佇列已經滿了,等待
#獲取佇列,佇列先進先出
print(queue.get())
print(queue.get())
print(queue.get())
#程序使用佇列通訊
def add_data(queue):
for i in range(3):
# print(i)
queue.put(i)
time.sleep(0.3)
#print(my_list)
#解決一直等待的問題
queue.put(none) #等get掉乙個之後,none就會新增進去
def read_data(queue):
# print('read', my_list)
while true:
value = queue.get()#隊裡空了,會等待
#解決等待問題
if value == none:
break
print(value)
if __name__ == '__main__':
queue = multiprocessing.queue(3)
add = multiprocessing.process(target=add_data,args=(queue,))
read = multiprocessing.process(target=read_data, args=(queue,))
add.start()
read.start()
python 基礎 執行緒 和 程序
程序執行緒 同一程序中,資訊共享和通訊。訪問差異會導致結果不一致。python程式中由global interpreter lock gil 主迴圈中要求只能有乙個控制線程執行。import time import threading threading.thread 是執行緒 每個執行緒的內容,等...
3 2 2 佇列訊息和非佇列訊息
摘錄於 windows程式 第5版,珍藏版 charles.petzold 著 p60 前面提過 windows 將訊息傳送給乙個視窗,意思是說 windows 呼叫了該視窗的視窗過程。但是,乙個 windows 程式同時還具有乙個訊息迴圈使用者從訊息佇列中檢索和分發訊息,其中檢索訊息是通過呼叫 g...
python基礎學習9
文字編輯器讀取檔案內容的流程 階段1 啟動乙個檔案編輯器 文字編輯器如nodepad pycharm,word 階段2 檔案編輯器會將檔案內容從硬碟讀入記憶體 階段3 文字編輯器會將剛剛讀入記憶體中的內容顯示到螢幕上 python直譯器執行檔案的流程 階段1 啟動python直譯器,此時就相當於啟動...