![]() |
1
0
你应该问的第一个问题是你是否 需要 首先将文件写入磁盘。即使您应该在处理阶段结束时将文件发送给使用者,也可以将文件内容保存在内存中并发送。使用者不关心文件是否存储在磁盘上,因为它只接收一个 字节数组 将文件存储在磁盘上唯一有意义的场景是,您将通过磁盘文件在进程之间进行通信(即,您的生产者将文件写入磁盘,向使用者发送一些通知,然后使用者从磁盘读取文件(例如,根据从通知中收到的文件名)。 缓冲器 读(或可能写)文件。这可以极大地减少内存开销(因为在给定时刻,您最终只会在内存中保留一个块,而不是整个20MB文件)。 关于添加多个线程,您应该测试是否有助于提高应用程序性能。如果应用程序已经是I/O密集型的,那么添加多个线程将导致在I/O流上添加更多争用,这将导致性能下降。 |
![]() |
2
0
如果没有详细的情况,像这样的问题可以用现有的软件更好地解决,比如 Apache NiFi : 它非常擅长提取文件,转换文件,并将它们放在其他地方(发送电子邮件,生成分析,等等)。NiFi是一个非常强大的工具,但是如果你需要的话,它可能是一个过度杀伤力的工具,因为它只提供了一些额外的设置。 |
![]() |
3
0
根据您的描述,我认为您应该在一个线程上对每个文件执行操作;i、 线程将下载文件,处理它,然后上传结果。
如果需要并行性,那么将下载/处理/上载作为
为什么这样?
可能会有帮助 . 但在现代(如Linux)操作系统上,在典型的现代机器上,内存<-&燃气轮机;磁盘I/O不太可能是主要的瓶颈。瓶颈很可能是网络I/O或服务器端I/O性能(特别是当服务器同时为其他客户机服务时) 调整缓冲。让系统正常工作,对其进行基准测试,对其进行分析,然后
|