Я отправляю свой скрипт Python в удаленный кластер со следующим скриптом: < /p>
Код: Выделить всё
#!/bin/ksh
#SBATCH --job-name=xx
#SBATCH --output=x.o%J
#SBATCH --error=x.o%J
#SBATCH --partition=xxx
#SBATCH --nodes=1
#SBATCH --mem=40G
#SBATCH --cpus-per-task=4
#SBATCH --time=00:00:30
#SBATCH --mail-type=END,FAIL
#SBATCH --account=xxx
srun python3 my_script.py "${SLURM_CPUS_PER_TASK}" > "output_${SLURM_JOB_NAME}_${SLURM_JOBID}.txt"
< /code>
Запускает следующий файл Python: < /p>
import sys
from multiprocessing import Pool
import numpy as np
import xarray as xr
def find_files_to_work_on(start_path):
# find the files to work on
return list_of_files
def check_files(file):
content = None
print(f"checking {file}", flush=True)
try:
with xr.open_dataset(file) as df:
if len(set(np.diff(df.time.values))) != 1:
content = file
except:
print(f"Cannot open {file}", flush=True)
return content
def main(argv):
core_count = 1
if len(argv) > 1:
core_count = int(argv[1])
path = "path_here"
input_files = find_files_to_work_on(path)
input_files.sort()
pool = Pool(processes=core_count)
results = pool.map(check_files, input_files)
print("Finished pool operation!", flush=True)
if __name__ == "__main__":
main(sys.argv)
< /code>
Файл Python сначала ищет несколько файлов .nc, а затем обрабатывает их.
Я немного упростил скрипт из того, что он должен делать, но проблема существует и для Этот пример.
Вот моя проблема:
Когда я запускаю это с #Sbatch -mem = 40g < /code> Я получаю выход, который выглядит так < /p>
Checking file 1
Checking file 1
Checking file 1
Checking file 1
Checking file 1
Checking file 4
Checking file 1
Checking file 1
Checking file 1
Checking file 4
Checking file 4
Checking file 4
........
Так что мои вопросы: < /p>
- Почему он печатает и запускает код несколько раз, даже если он должен просто запустить функцию check_files несколько раз? Я видел несколько похожих вопросов (например, почему Pool запускает весь файл несколько раз?), Но в основном это приходилось на то, чтобы люди не использовали, если __name__ == "__main __": . Кроме того, я проверил, что все файлы отображаются только один раз в списке, который дается пул. > за количество раз, когда материал печатается?
Подробнее здесь: https://stackoverflow.com/questions/793 ... iple-times