欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

簡單介紹Python中利用生成器實(shí)現(xiàn)的并發(fā)編程

系統(tǒng) 1611 0

我們都知道并發(fā)(不是并行)編程目前有四種方式,多進(jìn)程,多線程,異步,和協(xié)程。

多進(jìn)程編程在python中有類似C的os.fork,當(dāng)然還有更高層封裝的multiprocessing標(biāo)準(zhǔn)庫,在之前寫過的python高可用程序設(shè)計(jì)方法中提供了類似nginx中master process和worker process間信號處理的方式,保證了業(yè)務(wù)進(jìn)程的退出可以被主進(jìn)程感知。

多線程編程python中有Thread和threading,在linux下所謂的線程,實(shí)際上是LWP輕量級進(jìn)程,其在內(nèi)核中具有和進(jìn)程相同的調(diào)度方式,有關(guān)LWP,COW(寫時(shí)拷貝),fork,vfork,clone等的資料較多,這里不再贅述。

異步在linux下主要有三種實(shí)現(xiàn)select,poll,epoll,關(guān)于異步不是本文的重點(diǎn)。

說協(xié)程肯定要說yield,我們先來看一個例子:

            
#coding=utf-8
import time
import sys
# 生產(chǎn)者
def produce(l):
  i=0
  while 1:
    if i < 5:
      l.append(i)
      yield i
      i=i+1
      time.sleep(1)
    else:
      return
   
# 消費(fèi)者
def consume(l):
  p = produce(l)
  while 1:
    try:
      p.next()
      while len(l) > 0:
        print l.pop()
    except StopIteration:
      sys.exit(0)
l = []
consume(l)

          

在上面的例子中,當(dāng)程序執(zhí)行到produce的yield i時(shí),返回了一個generator,當(dāng)我們在custom中調(diào)用p.next(),程序又返回到produce的yield i繼續(xù)執(zhí)行,這樣l中又append了元素,然后我們print l.pop(),直到p.next()引發(fā)了StopIteration異常。

通過上面的例子我們看到協(xié)程的調(diào)度對于內(nèi)核來說是不可見的,協(xié)程間是協(xié)同調(diào)度的,這使得并發(fā)量在上萬的時(shí)候,協(xié)程的性能是遠(yuǎn)高于線程的。

            
import stackless
import urllib2
def output():
  while 1:
    url=chan.receive()
    print url
    f=urllib2.urlopen(url)
    #print f.read()
    print stackless.getcurrent()
   
def input():
  f=open('url.txt')
  l=f.readlines()
  for i in l:
    chan.send(i)
chan=stackless.channel()
[stackless.tasklet(output)() for i in xrange(10)]
stackless.tasklet(input)()
stackless.run()

          

關(guān)于協(xié)程,可以參考greenlet,stackless,gevent,eventlet等的實(shí)現(xiàn)。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天射天天怕 | 91精品久久久久久久久久 | 免费特黄一级欧美大片在线看 | 精品欧美小视频在线观看 | 亚洲网视频 | 99视频精品 | 视频国产一区 | 黄网站在线观看 | 欧美 日韩| 密室逃脱第一季免费观看完整在线 | 在线观看视频色 | 精品国产第一国产综合精品gif | 91精品国产一区二区三区蜜臀 | 久久久久久久久久网 | 一级欧美在线的视频 | 九九精品激情在线视频 | 欧美日韩91| 亚洲欧美成人综合在线 | 久久99精品热在线观看15 | 午夜在线看 | 水野朝阳128部合集在线 | 欧美成人影院在线观看三级 | 日本久久精品免视看国产成人 | 亚洲日韩中文字幕一区 | 性夜影院爽黄e爽在线观看 苏晓晖个人简介军衔 | 91青青国产在线观看免费 | 毛片搜索 | 精品成人一区二区 | 亚洲精品www | 91大神在线看 | 国产成人无码区免费内射一片色欲 | 久久久久久综合一区中文字幕 | 国产精品91久久久久久 | 九九热中文字幕 | 91短视频在线播放 | 久久综合九色综合91 | 久热在 | 国产精品外围在线观看 | 欧美日韩视频 | 国产精品久久久久久搜索 | 国产毛片精品 |