Как вы можете создать независимый процесс с Python, работающим в фоновом режиме - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь создать независимый, закулисный процесс, который полностью выполняется с Python.Можно ли создать такой процесс, когда даже после выхода из сценария Python процесс все еще работает в фоновом режиме.Я создал файл .exe с pyinstaller, и я хочу, чтобы этот файл запускался в фоновом режиме, не открывая консоль, так что пользователь не знает о процессе, если он не склонен часто открывать диспетчер задач.

Многопроцессорный модуль помогает создавать процессы, но они завершаются после завершения выполнения скрипта.То же самое с модулем многопоточности.

Можно ли каким-либо образом сохранить какой-то определенный фрагмент кода, работающий в фоновом режиме, даже после того, как скрипт завершит выполнение?или запустить весь сценарий в фоновом режиме вообще без отображения какой-либо консоли?

Я пытался использовать класс Process из модуля многопроцессорной обработки и класс Thread из модуля потоков, но все выходы выполнялись после выполнения сценария.Даже подпроцесс и модуль os оказываются бесполезными

from multiprocessing import Process
from threading import Thread

def bg_func():
   #stuff

def main():
   proc = Process(target=bg_func,args=())  #Thread alternatively
   proc.start()

1 Ответ

0 голосов
/ 05 апреля 2019

Когда я нашел эту проблему, единственное решение, которое я вижу, это сделать Double Fork. Вот пример, который работает.

import os
import time
from multiprocessing import Process


def bg():
    # ignore first call 
    if os.fork() != 0:
        return
    print('sub process is running')
    time.sleep(5)
    print('sub process finished')


if __name__ == '__main__':
    p = Process(target=bg)
    p.start()
    p.join()
    print('exiting main')
    exit(0)

Вывод показывает запуск подпроцесса, выход основной программы из состояния 0, мой запрос возвращается до того, как фоновая программа напечатает последнюю строку. Мы бежим в фоновом режиме. : D

[0] 10:58 ~ $ python3 ./scratch_1.py
exiting main
sub process is running
[0] 10:58 ~ $ sub process finished
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...