使用pycurl多进程下载葵花卫星数据

使用pycurl多进程下载葵花卫星数据

在我为组里写的海雾反演工具包中,有一个葵花卫星数据下载的函数。因为葵花卫星数据是通过FTP方式下载的,而Python的requests库又不支持FTP协议,所以只好借助了pycurl来下载数据。

最近葵花数据的下载异常的慢,而pycurl似乎没有多线程下载的功能,pycurl对多线程的支持也不好,无奈只能自己想办法实现多进程下载的功能了。

原始版本

原始的下载代码实现起来非常简单,调用setopt()函数依次设置好各个参数就可以下载数据了。这里只放出核心的代码部分。

CURL.setopt(pycurl.URL, ftp_url)
CURL.setopt(pycurl.NOPROGRESS, False)
CURL.setopt(pycurl.XFERINFOFUNCTION, ftp_callback)

if exists(f"{
     save_path}/{
     temp_filename}"):
    open_type = "ab"
    file_size = getsize(f"{
     save_path}/{
     temp_filename}")
    CURL.setopt(pycurl.RESUME_FROM, file_size)
    ftp_callback.set_start_size(file_size)
else:
    open_type = "wb"

with open(f"{
     save_path}/{
     temp_filename}", open_type) as f:
    CURL.setopt(pycurl.WRITEDATA, f)

    try:
        CURL.perform()
    except pycurl.error 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值