微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:一次运行顺序和并行测试

如何解决Python:一次运行顺序和并行测试

我最近扩展了python模块功能之一的范围,以便可以依次或并行(使用mpi4py)执行它。

def foo(param,use_mpi=False):
    pass

当我手动运行测试时,它会起作用:

# (1) Sequentially
>>> python my_test_seq.py
# (2) In parallel
>>> mpirun -n 3 my_test_par.py

到目前为止,我一直在使用pytest,一切都很好,直到我想添加并行测试为止。 确实,我找不到一种通过多个过程来启动并行测试(2)的方法。我唯一要做的是并行运行多个pytest(因此多次运行测试),但这不能满足我的需求...

有人知道这样做的方法吗?

解决方法

我找到了两种可能的方法:

  1. 使用pytest-mpi,当pytest在MPI下运行时,该软件包可帮助您运行测试,例如list_=['Brazil','Argentina'] pattern = "|".join(list_) # Now we have "Brazil|Argentina" as a string mask = df["Countries"].str.contains(pattern) subset = df.loc[mask] # Same subset as the previous example 。它提供了简单的标记来跳过不应使用mpi运行或应具有运行所需最少数量进程的测试,...
  2. 使用pytest_easyMPI,该软件包旨在使MPI代码测试与测试常规串行代码尽可能相似。使用如下装饰器将使您可以在同一文件中混合使用串行和并行代码(使用4个MPI等级运行):
.str.contains

然后用于启动测试的命令为$ mpirun -n 2 python -m pytest --with-mpi

我将使用pytest_easyMPI,因为它允许我透明地运行串行和并行测试。而且它似乎与pytest-xdist兼容!如果我有负面的反馈意见,我会在答案中进行修改或添加评论。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。