1.計算密集型下程序與執行緒對比
import time,os
from multiprocessing import process
from threading import thread
#計算密集型
def work():
res= 0
for i in range(100000):
res+= i
if __name__ == '__main__':
l= start= time.time()
for i in range(4):
# p= process(target= work) #0.3040175437927246
p= thread (target= work) #0.047002553939819336
p.start()
for p in l:
p.join()
stop= time.time()
print('run time is %s'%(stop-start))
2.io密集型下程序與執行緒的對比
from multiprocessing import process
from threading import thread
def work1():
time.sleep(2)
def work2():
time.sleep(2)
def work3():
time.sleep(2)
if __name__ == '__main__':
l= start= time.time()
# p1=process (target= work1) #2.2871310710906982
# p2 = process(target=work2)
# p3 = process(target=work3)
t1= thread (target= work1) #2.018115282058716
t2 = thread(target=work2)
t3 = thread(target=work3)
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
stop= time.time()
print('run time is %s'%(stop- start))
3、定時器
from threading import timer,current_thread
def task(x):
print('%s run....' %x)
print(current_thread().name) #列印程序名
if __name__ == '__main__':
t=timer(3,task,args=(10,))
t.start()
print('主')
4、程序queue方法
(1)佇列先進先出queue.queue
q=queue.queue(3)
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
(2)堆疊先進後出 queue.lifoqueue
import queue
q=queue.lifoqueue()
q.put(1)
q.put(2)
q.put(3)
print(q.get())
print(q.get())
print(q.get())
(3)優先順序佇列:優先順序高的先出來,數字越小,優先順序越高
q=queue.priorityqueue()
q.put((3,'data1'))
q.put((-10,'data2'))
q.put((11,'data3'))
print(q.get())
print(q.get())
print(q.get())
程序與執行緒區別以及應用場景
一.兩者區別 程序是分配資源的基本單位 執行緒是系統排程和分派的基本單位。屬於同一程序的執行緒,堆是共享的,棧是私有的。屬於同一程序的所有執行緒都具有相同的位址空間。多程序的優點 程式設計相對容易 通常不需要考慮鎖和同步資源的問題。更強的容錯性 比起多執行緒的乙個好處是乙個程序崩潰了不會影響其他程序...
程序執行緒優缺點和應用場景
程式設計相對容易 通常不需要考慮鎖和同步資源的問題。更強的容錯性 比起多執行緒的乙個好處是乙個程序崩潰了不會影響其他程序。有核心保證的隔離 資料和錯誤隔離。對於使用如c c 這些語言編寫的本地 錯誤隔離是非常有用的 採用多程序架構的程式一般可以做到一定程度的自恢復 master守護程序監控所有wor...
多程序和多執行緒的應用場景
大cc的部落格 這裡的執行緒指通過linux的pthread create而產生的原生執行緒,執行緒資源很寶貴,能被作業系統的任務排程器看見的 不是python gevent go gorouine裡的概念 我們討論以下兩種模型 多程序單執行緒模型 以下簡稱為多程序 單程序多執行緒模型 以下簡稱為多...