python基础案例:迅雷下载

使用进程池的方法模拟迅雷下载方式

 

from multiprocessing import Pool
import time


def down_load(movie_name):
    for i in range(5):
        print('电影:{},下载进度{}%'.format(movie_name, (i / 4 * 100)))
        time.sleep(1)

    return movie_name


def alert(movie_name):
    print('恭喜{}下载完成了...'.format(movie_name))


if __name__ == '__main__':
    movie_lst = ['西红柿首富', '功夫小子', '功夫熊猫', '叶问', '功夫', '战狼', '红海行动']
    pool = Pool(3)
    for movie_name in movie_lst:
        pool.apply_async(down_load, (movie_name,), callback=alert)

    pool.close()
    pool.join()

 

运行结果:

电影:西红柿首富,下载进度0.0%
电影:功夫小子,下载进度0.0%
电影:功夫熊猫,下载进度0.0%
电影:功夫小子,下载进度25.0%
电影:西红柿首富,下载进度25.0%
电影:功夫熊猫,下载进度25.0%
电影:功夫小子,下载进度50.0%
电影:西红柿首富,下载进度50.0%
电影:功夫熊猫,下载进度50.0%
电影:功夫小子,下载进度75.0%
电影:西红柿首富,下载进度75.0%
电影:功夫熊猫,下载进度75.0%
电影:功夫小子,下载进度100.0%
电影:西红柿首富,下载进度100.0%
电影:功夫熊猫,下载进度100.0%
电影:叶问,下载进度0.0%
恭喜功夫小子下载完成了...
电影:功夫,下载进度0.0%
恭喜西红柿首富下载完成了...
电影:战狼,下载进度0.0%
恭喜功夫熊猫下载完成了...
电影:叶问,下载进度25.0%
电影:功夫,下载进度25.0%
电影:战狼,下载进度25.0%
电影:叶问,下载进度50.0%
电影:功夫,下载进度50.0%
电影:战狼,下载进度50.0%
电影:叶问,下载进度75.0%
电影:功夫,下载进度75.0%
电影:战狼,下载进度75.0%
电影:功夫,下载进度100.0%
电影:叶问,下载进度100.0%
电影:战狼,下载进度100.0%
恭喜叶问下载完成了...
电影:红海行动,下载进度0.0%
恭喜功夫下载完成了...
恭喜战狼下载完成了...
电影:红海行动,下载进度25.0%
电影:红海行动,下载进度50.0%
电影:红海行动,下载进度75.0%
电影:红海行动,下载进度100.0%
恭喜红海行动下载完成了...
其中用到了回调函数
回调函数:
进程池中任何一个任务一旦处理完了,就立刻告知主进程,我好了
你可以处理我的结果了,主进程则可以调用一个函数去处理这个结果
该函数就是回调函数
from multiprocessing import Pool
import time
def test(num):
    print('开始了...',num)
    time.sleep(1)
    print('end...',num)
    return num

def test1(num):
    print('读一下数字--->',num)


if __name__ == '__main__':
    pool = Pool(3)
    for i in range(5):
        pool.apply_async(test,(i,),callback=test1)

    pool.close()
    pool.join()
    print('程序结束了...')

运行结果:

开始了... 0
开始了... 1
开始了... 2
end... 0
开始了... 3
读一下数字---> 0
end... 1
开始了... 4
读一下数字---> 1
end... 2
读一下数字---> 2
end... 3
读一下数字---> 3
end... 4
读一下数字---> 4
程序结束了...

 

程序中   test1() 就是回调函数,接收test() 函数中 return num 返回的num值

 

 

 

发布了169 篇原创文章 · 获赞 43 · 访问量 6万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览