有没有办法改进这个R代码以使其更快?我可以使用powershell这样做吗?我的csv有三列(第一列是第二列,第三列是目标路径)。
from netCDF4 import Dataset
import numpy as np
data = 'ModisAqua/A20140602014090.L3b_MO_NSST.nc'
fh = Dataset(data, 'r')
答案 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个参数url
的列标题和名为path
的标题$MaxThreads and $SleepTimer
以挤出效果