Python018__yield

yield

# 1. 建立一个生成器
def water1():
    for i in range(10):
        yield i


def main():
    yield_int = water1()
    yield_return = next(yield_int)
    print(yield_return)

if __name__ == '__main__':
    main()

yield 实现线程

import time


# 1. 建立一个生成器
def water1():
    while True:
        time.sleep(1)
        print("#" * 30)
        yield


def water2():
    while True:
        time.sleep(1)
        print("*" * 30)
        yield


def main():
    w1 = water1()
    w2 = water2()
    while True:
        next(w1)
        next(w2)

if __name__ == '__main__':
    main()

封装后的 yeild ==》 greenlet

import time
from greenlet import greenlet


# 1. 建立一个生成器
def water1():
    while True:
        time.sleep(1)
        print("#" * 30)
        g2.switch()


def water2():
    while True:
        time.sleep(1)
        print("*" * 30)
        g1.switch()


g1 = greenlet(water1)
g2 = greenlet(water2)


g1.switch()

封装后的greenlet ==》 gevent

import gevent
import time
from gevent import monkey

monkey.patch_all()


# 1. 建立一个生成器
def water1():
    while True:
        time.sleep(1)
        print("#" * 30)


def water2():
    while True:
        time.sleep(1)
        print("*" * 30)


gevent.joinall([
    gevent.spawn(water1),   # 如果有参数直接写就可以   gevent.spawn(water1, "name", "age")
    gevent.spawn(water2)
])
# 另一种方式
# g1 = gevent.spawn(water2)
# g1.join()

猜你喜欢

转载自blog.csdn.net/weixin_40639095/article/details/84769270