美文网首页
Python执行多进程任务的方法

Python执行多进程任务的方法

作者: 夏威夷的芒果 | 来源:发表于2021-01-12 17:24 被阅读0次

Python的多进程可以借助from multiprocessing import Pool来实现。
简而言之分为这样几步:

  1. 导入包from multiprocessing import Pool
  2. 编写任务函数。def 任务函数(参数)
  3. 实例化进程池并设置进程数。pool=Pool(欲设置的进程数)
  4. 开始布置任务,把多个任务添加进多进程池。pool.apply_async(任务函数,函数对应的参数元组)
  5. 关闭进程池的打包。pool.close()
  6. 开始执行多进程。pool.join()
    具体使用方式详见代码:
import requests
from multiprocessing import Pool

def mission(url,n):   #多进程要调用的任务函数,这里我把视频的编号也带上留作打印
    print(url,"say hi")  #来个标记,打印视频的URL
    response=requests.get(url)    #请求视频内容
    f=open(f"./%03d.ts"%n,"wb")    #打开空文件
    f.write(response.content)    #写入下载内容到空的视频文件中
    f.close()   #写入结束
    print("%03d.ts OK..."%n)   #打印告知视频已写入完毕

if __name__ == "__main__":
    pool=Pool(10)   #设置10个进程
    for n in range(1,7): #我有6小段视频等待爬取
        url = f"https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-{n}.ts"        
        pool.apply_async(mission,(url,n))     #任务函数、视频、编号打包进多进程池里
    pool.close()   #打包完毕

    pool.join()    #开始执行多进程

综上所述。多进程需要这几步:

  1. from multiprocessing import Pool
  2. 编写任务函数。这里我们用的是def mission(url,n):
  3. 实例化,设置进程数。这里我们用的是pool=Pool(10) #设置10个进程
  4. 把多个任务添加进多进程池。这里我们用的是for循环配合pool.apply_async(mission,(url,n))来添加进去,注意apply_async的使用方法是apply_async(任务函数,函数对应的参数元组)
  5. 打包完毕,关闭打包。pool.close()
  6. 开始执行多进程。pool.join()

运行结果:

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-1.ts say hi
https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-2.ts say hi
https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-4.ts say hi
https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-3.ts say hi
https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-6.ts say hi
https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-5.ts say hi
006.ts OK...
004.ts OK...
002.ts OK...
005.ts OK...
003.ts OK...
001.ts OK...

可见,由于下载和写入文件的速度快慢对每个进程的执行时间是有影响的……

相关文章

  • Python执行多进程任务的方法

    Python的多进程可以借助from multiprocessing import Pool来实现。简而言之分为这...

  • 阿里大数据工程师整理内部Python协程笔记,赶紧保存!

    python线程多并发,是指在一个进程中开启n个线程,以此来达到并发执行任务。但是python中的线程有GIL解释...

  • 进程与线程

    执行多任务方法 1.多进程模式:每个进程只有一个线程,多进程一块执行多个任务 2.多线程模式:启动一个进程,在一个...

  • day24系统编程

    1python系统编程 1.1进程 1.1.1多任务的引入 单任务: 多任务: 说明: ·程序执行到os.fork...

  • 进程相关(二)--子进程

    子进程 子进程是由父进程创建,用于执行某些任务(父进程可以在子进程执行完任务后继续,也可以在子进程执行任务中继续工...

  • 腾讯云centos7.2设置定时任务

    centos后台执行任务命令:setsid python xxxx.pycentos查看某个进程运行时间:ps -...

  • Python3简单实现多任务(多进程篇)

    python多进程实现多任务优点:稳定性高;提升程序执行效率 第一种:进程池快速创建(适合创建大量进程,简单,推荐...

  • 多线程

    线程和进程 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行 进程要想执行任务,必须得有线程,进程...

  • linux vim常用操作

    进程 查看python进程 ps -ef | grep python 查看进程详细信息 先执行cd /proc/{...

  • 进程池

    初识进程池 场景一:主进程不会等进程池内部的任务执行完毕后再执行,而是直接执行,进程池内部的任务,自己处理 场景二...

网友评论

      本文标题:Python执行多进程任务的方法

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