亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

對Python協(xié)程之異步同步的區(qū)別詳解

 更新時間:2019年02月19日 10:35:02   作者:haeasringnar  
今天小編就為大家分享一篇對Python協(xié)程之異步同步的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一下代碼通過協(xié)程、多線程、多進(jìn)程的方式,運行代碼展示異步與同步的區(qū)別。

import gevent
import threading
import multiprocessing
# 這里展示同步和異步的性能區(qū)別,可以看到異步直接同時執(zhí)行并完成,
# 而同步,需要等待第一個完成后再次執(zhí)行下一個,是有順序的執(zhí)行,而異步不需要
import time


def task(pid):
  gevent.sleep(0.5)
  print('Task %s done' % pid)

def task2(pid):
  time.sleep(0.5)
  print('Task %s done'%pid)

def synchronous():
  for i in range(1, 10):
    task(i)

def asynchronous():
  threads = [gevent.spawn(task, i) for i in range(1,10)]
  gevent.joinall(threads)

def thread_chronous():
  t_list = []
  for i in range(1,10):
    t = threading.Thread(target=task2,args=(i,))
    t.start()
    t_list.append(t)
  for j in t_list:
    j.join()

def multi_chronous():
  t_list = []
  for i in range(1, 10):
    t = multiprocessing.Process(target=task2, args=(i,))
    t.start()
    t_list.append(t)
  for j in t_list:
    j.join()

# 同步執(zhí)行
print('Synchronous:')
synchronous()
# 開啟協(xié)程異步執(zhí)行 自動切換函數(shù)
print('Asynchronous:')
asynchronous()
# 開啟線程異步執(zhí)行
print('Threading')
thread_chronous()
# 開啟進(jìn)程的異步執(zhí)行
if __name__ == '__main__':
  print('Multiprocess')
  multi_chronous()

關(guān)于異步 同步的一些理解:

同步和異步的區(qū)別就在于是否等待IO執(zhí)行的結(jié)果。好比你去麥當(dāng)勞點餐,你說“來個漢堡”,服務(wù)員告訴你,對不起,漢堡要現(xiàn)做,需要等5分鐘,于是你站在收銀臺前面等了5分鐘,拿到漢堡再去逛商場,這是同步IO。

你說“來個漢堡”,服務(wù)員告訴你,漢堡需要等5分鐘,你可以先去逛商場,等做好了,我們再通知你,這樣你可以立刻去干別的事情(逛商場),這是異步IO。

老張愛喝茶,廢話不說,煮開水。出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。

1 老張把水壺放到火上,立等水開。(同步阻塞)老張覺得自己有點傻

2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞)老張還是覺得自己有點傻,于是變高端了,買了把會響笛的那種水壺。水開之后,能大聲發(fā)出嘀~~~~的噪音。

3 老張把響水壺放到火上,立等水開。(異步阻塞)老張覺得這樣傻等意義不大

4 老張把響水壺放到火上,去客廳看電視,水壺響之前不再去看它了,響了再去拿壺。(異步非阻塞)老張覺得自己聰明了。所謂同步異步,只是對于水壺而言。普通水壺,同步;響水壺,異步。雖然都能干活,但響水壺可以在自己完工之后,提示老張水開了。這是普通水壺所不能及的。同步只能讓調(diào)用者去輪詢自己(情況2中),造成老張效率的低下。所謂阻塞非阻塞,僅僅對于老張而言。立等的老張,阻塞;看電視的老張,非阻塞。情況1和情況3中老張就是阻塞的,媳婦喊他都不知道。雖然3中響水壺是異步的,可對于立等的老張沒有太大的意義。所以一般異步是配合非阻塞使用的,這樣才能發(fā)揮異步的效用。

以上這篇對Python協(xié)程之異步同步的區(qū)別詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論