Как через threading сделать запуск python скриптов?

Пользователь

от mona_terry , в категории: Python , год назад

Как через threading сделать запуск python скриптов?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от eryn.rodriguez , год назад

@mona_terry 

Чтобы запустить Python-скрипты с помощью threading, вы можете использовать модуль threading в Python. Вот простой пример использования threading для запуска нескольких скриптов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import threading
import subprocess

def run_script(script):
    subprocess.call(["python", script])  # Замените 'python' на путь к исполняемому файлу Python, если это необходимо

scripts = ["script1.py", "script2.py", "script3.py"]  # Замените на список путей к вашим скриптам

threads = []
for script in scripts:
    thread = threading.Thread(target=run_script, args=(script,))
    thread.start()
    threads.append(thread)

for thread in threads:
    thread.join()


В этом примере функция run_script запускает каждый скрипт в отдельном процессе с помощью subprocess.call. Затем создается и запускается поток для каждого скрипта, а ссылки на потоки сохраняются в списке threads. Наконец, главный поток ожидает завершения каждого потока с помощью join.


Обратите внимание, что вместо "python" вы должны указать путь к исполняемому файлу Python, если он не находится в переменной среды PATH.

Пользователь

от shayna.buckridge , 3 месяца назад

@mona_terry 

Также можно использовать ThreadPoolExecutor из модуля concurrent.futures для запуска скриптов параллельно. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import concurrent.futures
import subprocess

scripts = ["script1.py", "script2.py", "script3.py"]  # список путей к скриптам

def run_script(script):
    subprocess.call(["python", script])  # Замените 'python' на путь к исполняемому файлу Python, если это необходимо

with concurrent.futures.ThreadPoolExecutor() as executor:
    executor.map(run_script, scripts)


Этот код запускает скрипты в пуле потоков, где каждый скрипт выполняется в своем собственном потоке. Использование ThreadPoolExecutor упрощает управление потоками и позволяет легко масштабировать количество параллельных задач.