zoukankan      html  css  js  c++  java
  • asyncio异步操作

    代码如下:

    import asyncio
    import os
    
    async def split_video(video_path):
        print("开始执行{}目录下的操作:".format(video_path))
        split_file = os.path.split(video_path)  # 分割文件名与目录
        split_filename = os.path.splitext(split_file[1])  # 分离文件名和扩展名
        os.chdir(split_file[0])  # 切换目录
        try:
            touch_dir = os.mkdir(split_filename[0])  # 创建文件夹,
        except Exception as e:
            print("文件已存在,请检查文件目录")
            os.system("pause")
            raise e
        os.chdir(split_filename[0])  # 切换目录至新建文件夹里面
        print("切割后的图片保存到:{}".format(os.getcwd()))
        await asyncio.sleep(1)                  # 此处阻塞,会不等待,直接执行后面的操作
        os.popen("ffmpeg -i {} -r 60 %d.jpg".format(video_path)).read()
    
    async def main():
        task_list = [asyncio.create_task(split_video(r"D:Video1.mp4")),
                     asyncio.create_task(split_video(r"D:Video2.mp4"))]
        done = await asyncio.wait(task_list)
        print(done)
    
    asyncio.run(main())

    查看运行结果:

    如图:第一个任务sleep后并没有等待,直接执行第2个任务,这就是异步操作。

  • 相关阅读:
    c#线程带参数
    svn自动update到指定目录
    204. 计数质数
    178. 分数排名
    387. 字符串中的第一个唯一字符
    374. 猜数字大小
    371. 两整数之和
    350. 两个数组的交集 II
    326. 3的幂
    219. 存在重复元素 II
  • 原文地址:https://www.cnblogs.com/xiamaojjie/p/13843376.html
Copyright © 2011-2022 走看看