Как бы я l oop a python файл, чтобы открыть еще один python файл на неопределенный срок? - PullRequest
0 голосов
/ 23 апреля 2020

Итак, я знаю, как выполнить файл Python в другом файле Python, exec(open('file.py').read()) Но в файле, который я хочу l oop, есть while(True): l oop внутри файла. Что я хочу сделать, так это l oop открытие файла, содержащего true, в то время как l oop, при этом файл запускается в фоновом режиме.

Код открытия:

loopCount=1
maxCount=100
while(loopcount<=maxCount):
     exec(open('whileTrue.py').read())

Я бы подумал, что вы будете делать что-то подобное, но вместо того, чтобы открывать файл, запускать файл в фоновом режиме, открывать файл снова и т. Д .; код открывает файл один раз, затем файл запускается без открытия следующего файла до тех пор, пока файл не будет закрыт.

Любая помощь с этим очень приветствуется.

1 Ответ

0 голосов
/ 23 апреля 2020

Во-первых, команда 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.

Надеюсь, это поможет.

...