激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 簡單介紹Python中利用生成器實現的并發編程

簡單介紹Python中利用生成器實現的并發編程

2020-06-20 10:35腳本之家 Python

這篇文章主要介紹了簡單介紹Python中利用生成器實現的并發編程,使用yield生成器函數進行多進程編程是Python學習進階當中的重要知識,需要的朋友可以參考下

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

多進程編程在python中有類似C的os.fork,當然還有更高層封裝的multiprocessing標準庫,在之前寫過的python高可用程序設計方法中提供了類似nginx中master process和worker process間信號處理的方式,保證了業務進程的退出可以被主進程感知。

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

異步在linux下主要有三種實現select,poll,epoll,關于異步不是本文的重點。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#coding=utf-8
import time
import sys
# 生產者
def produce(l):
  i=0
  while 1:
    if i < 5:
      l.append(i)
      yield i
      i=i+1
      time.sleep(1)
    else:
      return
   
# 消費者
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)

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

通過上面的例子我們看到協程的調度對于內核來說是不可見的,協程間是協同調度的,這使得并發量在上萬的時候,協程的性能是遠高于線程的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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()

關于協程,可以參考greenlet,stackless,gevent,eventlet等的實現。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本羞羞的午夜电视剧 | h色在线观看 | 中文字幕在线观看视频一区 | 国产高潮失禁喷水爽到抽搐视频 | 国产精品视频一区二区三区综合 | 免费一级毛片免费播放 | 操碰视频在线观看 | 成人综合区一区 | 91精品国产91 | 欧美综合在线观看视频 | 视频一区二区在线观看 | 亚洲成人免费视频在线 | 耽美男男肉文 | 欧美国产免费 | 久久精品视频网站 | 久久人添人人爽人人爽人人片av | 成年人视频在线免费观看 | 亚洲91精品 | 国av在线| 羞羞电影在线观看 | 最新日韩在线观看视频 | 欧美在线 | 亚洲 | 国产精品区在线12p 午夜视频色 | 一级一级一级一级毛片 | 久久视讯| 中文字幕免费播放 | 亚洲一区二区免费视频 | av在线日韩| 国产精品久久久久永久免费 | 免费a级毛片大学生免费观看 | 国产精品视频导航 | 思思久而久而蕉人 | 在线中文字幕不卡 | 黄色免费电影网址 | 曰韩在线视频 | 国产一区二区三区精品在线观看 | 免费性爱视频 | 看免费av | 99精品国产小情侣高潮露脸在线 | 亚洲影院在线播放 | 国产精品久久久久久久久久久天堂 |