Subprocess.popen выдает ошибку исключения - PullRequest
0 голосов
/ 23 марта 2019

У меня есть два файла Python, файл 1 и файл 2, которые делают две разные вещи.Я хочу, чтобы один из них (дочерний процесс) запускался в фоновом режиме, если он удовлетворяет условию родительского процесса.Дочерний процесс должен завершиться, если он не удовлетворяет условию внутри себя. Я использую VS2017

Псевдокод для файла 1:

Class A:
   foo1():
    .
    .
   foo2();
    if variable<30;
        #do this
    else;
      process = subprocess.Popen('py file2.py' ,shell=True,stdin=None, stdout=None, stderr=None, close_fds=True)

    #rest of the code for foo2()

if __name__ == "__main__":   
  A.foo2();

, а file2.py:

Class B:
   foo1():
    .
    .
   foo2();
    if check>0;
        #do this
    else;
      sys.exit()

    #rest of the code for foo2()

if __name__ == "__main__":   
  B.foo2();

Но когда я запускаю родительскую программу, во время некоторого набора значений для «переменной» (переменная постоянно изменяется внутри программы), я получаю следующую ошибку:

 Exception ignored in: <module 'threading' from 'C:\\Users\\Tianhe-2\\Anaconda3\\lib\\threading.py'>
Traceback (most recent call last):
  File "C:\Users\Tianhe-2\Anaconda3\lib\threading.py", line 1296, in _shutdown
    _main_thread._delete()
  File "C:\Users\Tianhe-2\Anaconda3\lib\threading.py", line 1015, in _delete
    del _active[get_ident()]
KeyError: 25044

Я получаю несколько строк этой ошибки с разными значениями KeyError.Есть ли способ противостоять этому в основной программе, например, если эта ошибка появляется, сделайте что-нибудь еще? ..

Любая помощь будет принята с благодарностью.

...