使用R从HTTPS(SharePoint EDMS)下载文件 - 可以更快地制作吗?

时间:2016-04-18 01:02:13

标签: r powershell sharepoint https webrequest

有没有办法改进这个R代码以使其更快?我可以使用powershell这样做吗?我的csv有三列(第一列是第二列,第三列是目标路径)。

from netCDF4 import Dataset
import numpy as np

data = 'ModisAqua/A20140602014090.L3b_MO_NSST.nc'
fh = Dataset(data, 'r')

1 个答案:

答案 0 :(得分:1)

PowerShell 方面,您可以执行此操作。

您可以将CSV导入PowerShell,然后您可以使用Jobs一次开始下载5行。因此,不是每次执行每行,而是一次处理5行或10行。

如何在PowerShell中实现此功能的粗略示例,没有加载或进度条:

[ScriptBlock]$Script = 
{
    Param($URL,
    $PATH
    )

    $webclient = new-object System.Net.WebClient
    $credCache = new-object System.Net.CredentialCache
    $creds = new-object System.Net.NetworkCredential("$Username","$Password")
    $credCache.Add("$url", "Basic", $creds)
    $webclient.Credentials = $credCache

    $webclient.DownloadFile($url, $PATH)
}

$MaxThreads = 10
$SleepTimer = 1000 #Milliseconds
$CSV = import-csv C:\Path\to\csv.csv

foreach($row in $CSV)
{
    While ($(Get-Job -state running).count -ge $MaxThreads)
        {
            Start-Sleep -Milliseconds $SleepTimer
        }
    Start-Job -ScriptBlock $Script -Name $row.url -ArgumentList @($($row.url), $($row.path)) | Out-Null
}

While ($(Get-Job -state running).count -ge 1)
{
    Write-Host "Waiting for last jobs to finish."
    Start-Sleep -Milliseconds $SleepTimer
}

write-host "Finished processing URLS" -ForegroundColor Green
  • $Script是一个代码块,每个作业都将完成,它需要2个参数
  • 假设csv有一个名为url的列标题和名为path的标题
  • 将启动10个作业以下载前10行,然后每个作业完成后将启动另一行。 10个下载的结果并排运行。
  • 检查下载是否每1秒完成一次。
  • 您可以调整$MaxThreads and $SleepTimer以挤出效果