У меня есть сценарий Python, запуск которого занимает день. Мне нужно запустить один и тот же код для разных параметров. Однако использование цикла for для перебора всех параметров невозможно, потому что это приведет к еще большему времени вычислений. Это простой пример для описания ситуации:
ValuesParams=[1,2,3,4,5] for i in ValuesParams: do something output file_i.csv
Я хотел бы запустить 5 разных программ (в компьютерном кластере) с 5 разными значениями, которые выводят 5 разных файлов csv с разными именами, но делают это одновременно . Потому что выполнение этого цикла for в одной программе займет 5 дней. На самом деле это не просто 5 параметров, и программа — не простой цикл.
Как я могу это сделать? Любой совет или информация о том, что искать, были бы невероятно полезны.
ИЗМЕНИТЬ Спасибо всем ответам, особенно remram. Они поставили меня на путь, чтобы найти ответ.
Решение 1. Я создал сценарий RunPrograms.sh, который перебирает параметры var1, var2, затем передал параметры моему сценарию python test.py и запустил все задания одновременно. Одно ограничение сохраняется, я должен быть осторожен с отправкой, например, 1000 заданий одновременно, но это то, что мне нужно.
Запуск двух программ одновременно
#!/bin/bash for var1 in $(seq 1 0.5 3); do for var2 in $(seq 1 3); do python3 test.py $var1 $var2 https://question-it.com/questions/1008978/odnovremennyj-zapusk-neskolkih-versij-odnoj-i-toj-zhe-programmy» target=»_blank»]question-it.com[/mask_link]
Как закрыть несколько окон одной и той же программы через одну и ту же программу и оставить активной только одну программу
Я использую меню правой кнопки мыши, чтобы запустить программу, которая перемещает файлы в папку и выполняет с ними некоторую работу. Проблема в том, что когда я делаю это с несколькими файлами, он запускает несколько экземпляров программы. Если у меня есть 50 файлов, приложение запустится 50 раз.
Мне нужно иметь только одно окно, а не несколько окон. До сих пор мне иногда удавалось заставить его работать с этим кодом, но мне нужно, чтобы он работал в 100% случаев:
# ======================================================== #this only catches the file adress that was right clicked and launch with the app. Then it moves it to the installer folder try: # THIS CATCHES THE SELECTED FILE LINK TO BE MOVED TO THE INSTALL FOLDER IF IT IS SUCCESSFULL variable= sys.argv[1] index = -1 for i in variable: index = index + 1 if «\» in i: sum= index # MOVE TO INSTALLER DIRECTORY shutil.move(variable, Install_folder + f»Installerfiles») except: print(‘FILE NOT ADDED THROUGH THE MOVE TOOL’) #========================================================= processlist = list() time.sleep(int(time.process_time())*random.randint(1,3)) for process in psutil.process_iter(): processlist.append(process.name()) if processlist.count(«program.exe») >= 4: sys.exit()
Я предполагаю, что программы начинают активироваться одновременно, и, возможно, поэтому они закрываются, а не оставляют только одно активное окно. У меня только 2 месяца Python, поэтому надеюсь, что вы могли бы мне помочь. Заранее спасибо за чтение.
Как запустить два Аккаунта одновременно на одном ПК?
Мое другое альтернативное решение — разделить программы на две части. Один для перемещения файлов, а другой для работы с файлами. Но это решение не является желаемым.
try: variable = sys.argv[1] index = -1 # THIS CATCHES THE SELECTED FILE LINK TO BE MOVED TO THE HANDY INSTALL FOLDER IF IT IS SUCCESSFULL for i in chetita: index = index + 1 if «\» in i: sum = index # CHOOSES DIRECTORY WHERE THE FILES TO BE INSTALLED ARE shutil.move(variable, f»\program\InstallFolder») os.makedirs(f»\program\Queue») tiger = [] serpent = [] while True: time.sleep(1) serpent = os.listdir(f»\program\InstallFolder») time.sleep(1) tiger = os.listdir(f»\program\InstallFolder») if tiger == serpent: break except: if os.path.exists(f»\program\Queue»): sys.exit() print(‘application executed directly through the .exe’).
В основном, когда открываются все окна, первое окно завершает задачу перемещения файла. Создает файл с именем Queue и входит в цикл while, который активен до тех пор, пока содержимое папки не совпадет с 2 переменными (это означает, что все остальные окна завершают свою работу и закрываются). Другие программы закрываются, потому что они получают исключение при попытке создать эту папку. Когда все остальные программы будут закрыты, ожидающие окна выйдут из цикла while и начнут работать с файлами.
Комментарии (3)
«заставить иногда работать». когда он работает и когда он терпит неудачу?
Источник: reddeveloper.ru
Как одновременно выполнить несколько команд в командной строке
Для объединения команд в командной строке в одну строку, используются специальные символы, которые называются символами условной обработки. У командного процессора в MS-DOS и интерпретатора командной строки Windows в виде COMMAND.com или CMD.exe их существует в количестве пяти штук, но нас интересует только три из них.
Использование символов условной обработки
Для экранирования описанных ниже символов . Работает это следующим образом: после выполнения первой команды, будет выполнена вторая команда, и т. д. В качестве примера рассмотрим запуск Калькулятора (calc.exe), а затем — Блокнота (notepad.exe):
calc.exe notepad.exe F:data.txt)
Источник: pc.ru