美文网首页
python 协程与线程(协程动态添加task)

python 协程与线程(协程动态添加task)

作者: 青铜搬砖工 | 来源:发表于2019-02-26 16:16 被阅读0次

协程

import asyncio
import time
from threading import Thread

now = lambda :time.time()


def start_loop(loop):
    asyncio.set_event_loop(loop)
    loop.run_forever()

async def do_some_work(x):
    print('Waiting {}'.format(x))
    await asyncio.sleep(x)
    print('Done after {}s'.format(x))


start = now()
new_loop = asyncio.new_event_loop()
t = Thread(target=start_loop, args=(new_loop,))
t.start()
print('TIME: {}'.format(time.time() - start))

for i in range(100000):#协程开启十万个
    asyncio.run_coroutine_threadsafe(do_some_work(i*10), new_loop)
image.png

大约50多秒

线程

import asyncio
import time
from threading import Thread

now = lambda :time.time()


def start_loop(loop):
    asyncio.set_event_loop(loop)
    loop.run_forever()

async def do_some_work(x):
    print('Waiting {}'.format(x))
    await asyncio.sleep(x)
    print('Done after {}s'.format(x))


start = now()
new_loop = asyncio.new_event_loop()
t = Thread(target=start_loop, args=(new_loop,))
t.start()
print('TIME: {}'.format(time.time() - start))

# for i in range(100000):#协程开启十万个
#     asyncio.run_coroutine_threadsafe(do_some_work(i*10), new_loop)

def test_thread(index):
    print("waiting {}".format(index*10))
    time.sleep(index*10)
    print("Done {}".format(index*10))
for i in range(100000):#线程开启十万个
    t = Thread(target=test_thread, args=(i,))
    t.start()
image.png

消耗时间大约110多秒,电脑甚至卡死。
由上可见 协程比线程占据更少资源

相关文章

  • python 协程与线程(协程动态添加task)

    协程 大约50多秒 线程 消耗时间大约110多秒,电脑甚至卡死。由上可见 协程比线程占据更少资源

  • python异步协程(aiohttp,asyncio)

    python异步协程 环境:python3.7.0 协程 协程,英文叫做 Coroutine,又称微线程,纤程,协...

  • Python 协程

    仅供学习,转载请注明出处 协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个...

  • 协程

    1.协程 协程,又称微线程,纤程。英文名Coroutine。 1.1 协程是什么 协程是python个中另外一种实...

  • Python并发编程——协程

    摘要:Python,协程,gevent 协程基本概念 协程,又称微线程,纤程。英文名Coroutine,是Pyth...

  • 协程介绍

    协程 协程,又称微线程,纤程。英文名Coroutine。 1.协程是什么? 协程是python个中另外一种实现多任...

  • 4-7

    协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个中另外一种实现多任务的方式...

  • 协程

    协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个中另外一种实现多任务的方式...

  • 36.Python并发编程之协程

    Python并发编程之协程 协程协程是程序级别的概念,操作系统根本就没有协程的概念!!!协程的本质就是一条线程,可...

  • 协程

    协程与线程 线程的调度是由操作系统负责,协程调度是程序自行负责 与线程相比,协程减少了无谓的操作系统切换 协程实际...

网友评论

      本文标题:python 协程与线程(协程动态添加task)

      本文链接:https://www.haomeiwen.com/subject/wgaayqtx.html