Python執行緒,程序,攜程,I O同步,非同步

2022-08-22 13:57:10 字數 2153 閱讀 9489

舉個栗子

我想get三個url,先用普通的for迴圈

import

requests

from multiprocessing import

process

from threading import

thread

import

requests

import

time

#-----正常遍歷 序列 同步-----

defget_page(url):

page =requests.get(url)

print

(url)

start =time.time()

urls = ['

','','']

for i in

urls:

get_page(i)

end =time.time()

print(end - start)

# 這是正常的

這回我用threading模組給他弄快點。

def

get_page(url):

page =requests.get(url)

start =time.time()

list = #

執行緒物件列表

urls = ['

','','']

for i in

urls:

ok = thread(target=get_page,args=(i,)) #

target為函式名,args為給函式傳的引數

#get_page(i)

for i in

list:

i.start()

#啟動一下執行緒

for i in

list:

i.join()

#主線程等待子執行緒執行之後結束

end =time.time()

print(end - start)

# 開了仨執行緒執行

# 如果執行緒使用了join()函式(主線程**將停在join) ,主程序將等待子執行緒執行結束再執行

# 如果子執行緒(

ok.setdeamon(true)

)變成守護執行緒,那麼主線程將不會等待子執行緒執行結束,當主線程結束時,不管子執行緒是否執行完畢都將強制終止!

我再瞅瞅程序

import multiprocessing

import time

def run():

i = 0

while i <10000

: time.sleep(2)

print(i)

i+=1

if __name__ == "

__main__":

p = multiprocessing.process(target=run) # 乙個程序

p.start()

print(p.pid) # 檢視程序的pid

再來個多程序

import

multiprocessing

import

time

defrun():

i =0

while i <10000:

time.sleep(2)

print

(i) i+=1

if__name__ == "

__main__":

p = multiprocessing.process(target=run) #

乙個程序

p1 = multiprocessing.process(target=run) #

乙個程序

p2 = multiprocessing.process(target=run) #

乙個程序

p.start()

p1.start()

p2.start()

print(p.pid) #

檢視程序的pid

執行緒 程序 攜程理解

併發 擁有處理多個任務的能力。對於單核cpu來說,只能處理併發 並行擁有同時處理多個任務的能力,對於多核cpu,即可以併發和並行同步和非同步強調的是訊息通訊機制如果乙個人這樣處理 先燒水,燒水的過程中啥也不幹,就一直等著,等水開後,再把茶葉放到開水壺中。這種處理方法就是同步處理 也就是說,乙個任務需...

程序,執行緒,攜程複習

1 程序 正在進行的乙個過程或者說是乙個任務,而負責執行的就是cpu 2 同有個程式執行兩次,也就是兩個程序 3 同步執行 乙個程式正在執行,另乙個程式等執行完後才能執行 4 非同步執行 乙個程式正在執行時,另乙個程式無需等待執行完才執行,就可以執行。當有訊息返回系統會通知後者進行處理 5 無論並行...

Python 程序 執行緒 協程

程序和執行緒之間的關係 執行緒是屬於程序的,執行緒執行在程序空間內,同一程序所產生的執行緒共享同一記憶體空間,當程序退出時該程序所產生的執行緒都會被強制退出並清除。執行緒可與屬於同一程序的其它執行緒共享程序所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在執行中必不可少的資訊 如程式計數...