我有一个通过 GNU 并行并行化的 Python 脚本,它找到了我想要输出到文件的某个结果,目前我通过标准 Python 文件 IO 来执行此操作。问题是我在每个并行线程中打开这个文件,并且线程在写入时互相踩着脚趾。我想实现一个 FIFO 信号量,我认为它必须在 GNU 并行脚本中,但是如果我从 Python 中访问文件,我不确定如何做到这一点。我当前的脚本是:
#!/bin/bash
time parallel -j$(nproc) -N0 python3 ./polynomial_generator.py ::: {1..10} --progress echo {} >/tmp/out
答案1
更改 python 脚本,以便将其输出发送到 stdout,然后执行以下操作:
parallel -N0 --progress --results res/ python3 ./polynomial_generator.py ::: {1..10}
输出现在将位于res/*/*
.