執行緒與程序應用場景

2021-09-24 12:34:54 字數 2211 閱讀 5147

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裡的概念 我們討論以下兩種模型 多程序單執行緒模型 以下簡稱為多程序 單程序多執行緒模型 以下簡稱為多...