zoukankan      html  css  js  c++  java
  • Python---协程---重写多线程

    一、

    # 用协程的方式,修改播放电影和音乐的练习题

    # 用协程的方式完成播放

    movie_list = ["斗破.mp4", "复仇者联盟.avi", "钢铁雨.rmvb", "xxx.mp4"]
    music_list = ["周杰伦.mp3", "五月天.mp3"]
    movie_format = ['mp4', 'avi']
    music_format = ['mp3']

    import time
    import asyncio

    #async await
    @asyncio.coroutine
    def play(playlist):
    for i in playlist:
    if i.split(".")[1] in movie_format:
    print("now playing movie named {}".format(i))
    yield time.sleep(1)
    elif i.split(".")[1] in music_format:
    print("now playing music named {}".format(i))
    yield time.sleep(2)
    else:
    print("NO SUPPORTED")

    loop = asyncio.get_event_loop()
    task = [play(movie_list), play(music_list)]
    loop.run_until_complete(asyncio.wait(task))
    loop.close()

    二、

    # 用协程的方式完成播放

    movie_list = ["斗破.mp4", "复仇者联盟.avi", "钢铁雨.rmvb", "xxx.mp4"]
    music_list = ["周杰伦.mp3", "五月天.mp3"]
    movie_format = ['mp4', 'avi']
    music_format = ['mp3']

    import time
    import asyncio

    #async await
    #@asyncio.coroutine
    async def play(playlist):
    for i in playlist:
    if i.split(".")[1] in movie_format:
    print("now playing movie named {}".format(i))
    await asyncio.sleep(1)
    elif i.split(".")[1] in music_format:
    print("now playing music named {}".format(i))
    await asyncio.sleep(2)
    else:
    print("NO SUPPORTED")

    loop = asyncio.get_event_loop()
    task = [play(movie_list), play(music_list)]
    loop.run_until_complete(asyncio.wait(task))
    loop.close()
    三、#### 使用协程的概念,达到以下目的,输入a、b、c、d四个整数,打印出(a+b)*(c+d)的值,假设a+b和c+d是一个耗时一秒的IO操作

    #  encoding:utf-8

    # 使用协程的概念,达到以下目的,输入a、b、c、d四个整数,打印出(a+b)*(c+d)的值,假设a+b和c+d是一个耗时一秒的IO操作

    import asyncio
    import threading
    async def sum(a, b):
    print("now begin cacl, current thread is {}".format(threading.currentThread()))
    r = int(a) + int(b)
    await asyncio.sleep(1)
    print("现在计算完了,current thread is {}".format(threading.currentThread()))
    return r

    loop = asyncio.get_event_loop()
    task = asyncio.gather(sum(1,2), sum(3,4))
    loop.run_until_complete(task)
    r1,r2 = task.result()
    print(int(r1)*int(r2))
    loop.close()

    四、




  • 相关阅读:
    【linux]】lighttpd的日志格式
    【vi】awk为指定行的指定字段添加一个单词
    【Android】命令行操作-启动应用程序
    CCS设置第一个li的元素与其他li样式不同
    nginx+tomcat 下POST响应参数过大无法显示完整及文件下载服务遇到过大文件无法下载解决办法
    有重复行,查询时只保留最新一行的sql
    Android定时执行和停止某任务
    MySQL每天自动增加分区
    <html:option获取文本值
    easyui datagrid 增删改查示例
  • 原文地址:https://www.cnblogs.com/niaocaizhou/p/11075659.html
Copyright © 2011-2022 走看看