gpt4 book ai didi

parallel-processing - 使用 gnu parallel 在 wine 下运行 windows 程序

转载 作者:行者123 更新时间:2023-12-01 13:42:37 26 4
gpt4 key购买 nike

我有一个非常基本的脚本,可以在 Wine 下运行多个 Windows 种群遗传学程序 (msvar.exe)。它使用“查找”在多个文件夹中查找启动文件 (INTFILE),然后使用该启动文件在每个目录中启动一个 msvar.exe 实例。不同的文件夹在启动文件中会有不同的参数,所以我可以通过添加“&”参数来运行一系列模拟。在这里;

for i in $(find /home/msvartest -name INTFILE -type f)
do (
cd $(dirname $(realpath $i));
# wine explorer /desktop=name msvar.exe;
wineconsole --backend=user msvar.exe;
) &
done

目前,我在我的双六核机器上同时运行多达 20 个 msvar.exe 副本,每个副本都在它自己的 wineconsole(或 wine explorer 窗口)下。每个运行实例可能需要 3 或 4 天,但程序仅在单个内核上运行,因此我需要并行运行模拟。看起来 Gnu parallel 是运行 msvar.exe 的更好方法,并且允许我在远程计算机上运行更多模拟。按照 Run wine in parallel with gnu-parallel - needs {%} slot substitution to work 中的建议,我试图让 Gnu 与 wineconsole 并行工作,但没有成功。 .有没有人能提供帮助,或者更好地编写一个我可以使用的脚本。

感谢您的帮助。

最佳答案

我认为你的命令会变得非常长而且笨拙,除非你使用像这样的导出函数:

#!/bin/bash

doit() {
...
...
}

export -f doit
parallel -j 10 doit ::: {0..99}

因此,对于您的示例(未经测试):

#!/bin/bash

doit() {
echo Processing $1
cd $(dirname $(realpath "$1"));
WINEPREFIX=$HOME/slot{%} wineconsole --backend=user msvar.exe
}
export -f doit

find /home/msvartest -name INTFILE -type f | parallel --dry-run doit

不幸的是,我没有设置您的环境来测试它,但如果有小错误,它应该很接近并且很容易纠正。尝试看看它做了什么,然后删除 --dry-run 让它实际做一些事情。

如果您的文件名中有空格,您应该使用 -print0 和您的 find 命令,并在 之后添加 -0 parallel 但这只是暂时使事情复杂化。

关于parallel-processing - 使用 gnu parallel 在 wine 下运行 windows 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38691023/

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