Как я могу перейти к другой строке кода Python, пока предыдущая строка еще работает - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь создать скрипт Python для автоматического запуска всех моих команд Django, но выполнение скрипта останавливается на os.system('python manage.py runserver') и не запускает следующую строку, потому что os.system('python manage.py runserver') должен продолжать работать.Как запустить следующую строку кода, пока os.system('python manage.py runserver') еще работает?

Я пытался использовать метод сна python, чтобы подождать несколько секунд, а затем запустить следующую строку, но он не сработал.

Вот мой код:

import os, webbrowser, time
os.system('pipenv shell')
os.system('python manage.py runserver')
time.sleep(5)
webbrowser.open('http://127.0.0.1:8000', new=1, autoraise=True)

Выполнение останавливается на os.system('python manage.py runserver'), но я хочу, чтобы оно запускалось webbrowser.open('http://127.0.0.1:8000', new=1, autoraise=True), пока os.system('python manage.py runserver') все еще выполняется.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Старые модули os.system, os.spawn* заменяются более новыми модулями с большим количеством функций subprocess и рекомендуется использовать вместо старых.

Используйте os.spawnl(os.P_NOWAIT, 'python manage.py runserver'), который вернет PID нового процесса без ожиданиядля кода возврата.

subprocess.Popen() создает фоновые дочерние процессы и не ждет завершения дочерних процессов.Для получения дополнительной информации, пожалуйста, следуйте документации .

0 голосов
/ 26 декабря 2018

Вам нужно использовать subprocess,

from subprocess import call
call('python manage.py runserver',shell=True,cwd="/my/code/dir/") # your code directory
webbrowser.open('http://127.0.0.1:8000', new=1, autoraise=True)
...