Во-первых, команда exec(...)
небезопасна, и ее действительно следует избегать. Альтернативный метод - импортировать другой файл Python, как если бы он был модулем.
Чтобы иметь возможность запускать второй файл несколько раз параллельно, вы можете использовать модуль threading
, встроенный в Python.
Скажем, у нас есть два файла, FileA.py
и FileB.py
.
FileA.py
:
import threading, FileB
for i in range(5):
currentThread = threading.Thread(target=FileB.Begin)
currentThread.start()
FileB.py
:
import time
def Begin():
for i in range(10):
print("Currently on the {} second...".format(i))
time.sleep(1)
FileA.py
запустит 5 различных потоков, каждый из которых будет запускать Begin()
функция от FileB.py
. Вы можете заменить содержимое функции Begin()
, переименовать ее или сделать что угодно, но обязательно обновите темы target
в FileA.py
.
Следует отметить, что открытие слишком большого количества потоков это плохая идея, так как вы можете превысить объем памяти, который есть на вашем компьютере. Кроме того, вы должны убедиться, что ваши потоки в конечном итоге заканчиваются и не являются истинным «бесконечным l oop», так как вы можете обнаружить, что вынуждены закрывать свою версию FileA.py
, чтобы завершить потоки.
Для получения более подробной информации о резьбовом модуле вы можете ознакомиться с документацией python: https://docs.python.org/3/library/threading.html
. поиск в потоке Python в Google.
Надеюсь, это поможет.