Uri*_*hen 7 python parallel-processing concurrency scientific-computing multiprocessing
使用Python编写科学代码时遇到以下问题:
作为一名工程师,我知道所有关于正确的架构(工作项排队,工作线程或进程,工作结果排队并写入持久存储); 但我不想自己实施.最棘手的问题是由于代码更改或临时系统问题(例如内存不足)而需要重新运行.
我想找到一些框架,我将提供所需的输入(例如,每个运行一行文件)然后我将能够启动一些框架提供的代理的多个实例,它将运行我的代码.如果运行时出现问题(例如临时系统问题或由于bug导致的抛出异常),我将能够删除结果并运行更多代理.如果我占用太多资源,我将能够在不担心数据不一致的情况下杀死一些代理,而其他代理会在找到时间时获取工作项.
现有解决方案吗?有人希望分享他的代码吗?谢谢!
我可能是错的,但只是使用GNU命令行实用程序,对于这种情况,似乎parallel甚至xargs适合我.用法可能如下所示:
cat inputs | parallel ./job.py --pipe > results 2> exceptions
Run Code Online (Sandbox Code Playgroud)
这将为并行的job.py每一行执行,将inputs成功的结果输出到results,并将失败的结果输出到exceptions.在这个Biostars线程中可以找到很多用法示例(也适用于科学Python脚本).
并且,为了完整性,并行文档.