gpt4 book ai didi

ios - 检查适用于 iOS 的 Amazon S3 中的并行下载

转载 作者:行者123 更新时间:2023-11-29 02:41:32 24 4
gpt4 key购买 nike

美好的一天。我想知道是否有一种方法可以使用 Amazon 标准 iOS SDK 并行下载多个图像。

似乎是按顺序下载,而不是并行下载。

我使用此委托(delegate)来根据请求的总数来计算下载的图像数量。

-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response

当我检查每次下载完成时的时间戳时,每个图像的持续时间约为 3-4 秒:

  • 11:46:22.744:图片 1 已下载完毕
  • 11:46:27.942:图片 2 下载完毕
  • 11:46:31.085:图片 3 下载完毕
  • 11:46:34.044:图片 4 下载完毕

这些图像的文件大小几乎相同(500KB),因此我的印象是图像是按顺序下载的,而不是并行下载的。

异步下载请求在具有不同传输管理器实例的单独线程中调用:

[self.transferManager downloadFile:targetFile bucket:S3_BUCKET key:s3Key]

有没有办法在代码中添加一些东西来并行下载图像?另外,是否有一个程序可以了解/监视所有下载请求是否并行移动?

最佳答案

我不确定 AWS SDK iOS 是哪个版本您正在使用,但对于版本 2,您可以控制异步上传/下载是按顺序还是并行进行。有关这些主题的更多详细信息,有很多非常有用的信息 here .

我在下面附上一个如何并行上传文件的例子。下载将是相同的。希望这可以帮助。

-(void) uploadAllFileRequests
{
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
NSMutableArray *tasks = [NSMutableArray new];

for (__block AWSS3TransferManagerUploadRequest *uploadRequestLocal in self.arrayOfUploadRequests)
{

[tasks addObject:[[transferManager upload:uploadRequestLocal] continueWithBlock:^id(BFTask *task) {
if (task.error != nil) {
if( task.error.code != AWSS3TransferManagerErrorCancelled
&&
task.error.code != AWSS3TransferManagerErrorPaused
)
{
NSLog(@"ERROR");
}
} else {

NSLog(@"SUCCESS");
}
return nil;
}]];
}
[[BFTask taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask *task)
{
NSLog(@"Finished all");
return nil;
}];
}

这里,self.arrayOfUploadRequests 是 AWSS3TransferManagerUploadRequest 的数组。

关于ios - 检查适用于 iOS 的 Amazon S3 中的并行下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25717765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com