使用wget
每20分钟处理一个请求从不同位置下载大约300张照片的项目。
我写了一个C程序,它将所有ID和数据库的数据库读入一个数组。
对于数组中的每个条目,我调用外部wget
命令来下载它。
它工作但很慢,因为它是一个接一个地做。
我的想法是使用多进程,多线程或openMP来创建多个子进程。 任何关于如何做到这一点的建议都是值得赞赏的。
答案 0 :(得分:1)
多个流程
一个进程中的错误不会导致另一个进程崩溃。当您托管第三方代码(例如插件)时,此功能特别有用,这是Google Chrome采用的方法(以及其他方式)。缺点是 N 进程比 N 线程使用更多的系统资源。
多线程
使用的系统资源少于同等数量的进程。对于许多开发人员来说,线程编程更容易出错,并且一个线程中的错误可能会影响其他线程。
最佳选择
对于您正在做的事情,您不太可能看到资源利用率的显着差异。使用您能以高质量快速编写的模型。
答案 1 :(得分:1)
就个人而言,我会选择多道工序。 wget不需要共享任何内存或通信(除了root只需要的退出状态),因此线程不会提供任何额外的好处(在我看来)。除了将它们创建为已处理之外,OS调度程序还可以最好地决定何时运行每个进程。