Потоки Python в Mac OS аварийно завершают работу с типом NSException ⇐ Python
Потоки Python в Mac OS аварийно завершают работу с типом NSException
При попытке реализовать многопоточность в своем коде я столкнулся с ошибкой, которая возникает только в Mac OS. Вот основная часть кода, и при попытке изменить переменную ox или oy из потока Python аварийно завершает работу. Цель моего кода — иметь возможность запускать некоторый код, например добавлять препятствия для алгоритма dstar, одновременно создавая график с помощью библиотеки matplotlib.
m = Карта(300, 300) бык, ой = [], [] защита add_obstacles(): пока правда: a = [int(x) for x in input("x,y,xe,ye: ").split()] для i в диапазоне (a[1], a[3]): для j в диапазоне (a[0], a[2]): ox.append(j) ой.append(я) защита основной(): пока правда: начало = [1, 16] цель = [63, 16] m.set_obstacle([(i, j) для i, j в zip(ox, oy)]) если шоу_анимация: plt.plot(ox, oy, ".k") plt.plot(start[0], start[1], "og") plt.plot(цель[0], цель[1], «xb») plt.axis("равно") start = m.map[start[0]][start[1]] конец = m.map[цель[0]][цель[1]] dstar = Dstar(м) rx, ry = dstar.run(начало, конец) если шоу_анимация: plt.plot(rx, ry, "-r") plt.show() если __name__ == '__main__': Препятствие_thread = threading.Thread(target=add_obstacles) препятствие_нить.start() основной() Вот ошибка:
*** Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «nextEventMatchingMask следует вызывать только из основного потока!» *** Стек вызовов первого броска: ( 0 CoreFoundation 0x00007ff811bed0b6 __ExceptionPreprocess + 242 1 libobjc.A.dylib 0x00007ff8116e2231 objc_Exception_throw + 48 2 AppKit 0x00007ff815a71cc9 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 4241 3 _macosx.cpython-311-darwin.so 0x0000000102f0451c wait_for_stdin + 364 4 Python 0x000000010252c9d6 my_fgets + 40 5 Python 0x000000010252c8d6 PyOS_StdioReadline + 171 6 Python 0x000000010252cb13 PyOS_Readline + 167 7 Python 0x0000000102619e5a встроенный_input_impl + 1491 8 Python 0x0000000102628363 _PyEval_EvalFrameDefault + 50514 9 Python 0x000000010262b961 _PyEval_Vector + 92 10 Python 0x00000001026291ce _PyEval_EvalFrameDefault + 54205 11 Python 0x000000010262b961 _PyEval_Vector + 92 12 Python 0x0000000102551260 метод_vectorcall + 426 13 Python 0x00000001026deefd thread_run + 163 14 Python 0x0000000102682983 pythread_wrapper + 36 15 libsystem_pthread.dylib 0x00007ff811a9f202 _pthread_start + 99 16 libsystem_pthread.dylib 0x00007ff811a9abab thread_start + 15 ) libc++abi: завершение работы из-за неперехваченного исключения типа NSException Я также попробовал добавить в ветку matplotlib, но это привело к почти такому же сбою. Итак, есть ли какие-либо решения относительно того, как правильно использовать потоки в Mac OS? Небольшое примечание: я новичок в программировании на Python, поэтому, вероятно, это неправильный способ сделать то, что я пытаюсь, поэтому любые предложения приветствуются.
При попытке реализовать многопоточность в своем коде я столкнулся с ошибкой, которая возникает только в Mac OS. Вот основная часть кода, и при попытке изменить переменную ox или oy из потока Python аварийно завершает работу. Цель моего кода — иметь возможность запускать некоторый код, например добавлять препятствия для алгоритма dstar, одновременно создавая график с помощью библиотеки matplotlib.
m = Карта(300, 300) бык, ой = [], [] защита add_obstacles(): пока правда: a = [int(x) for x in input("x,y,xe,ye: ").split()] для i в диапазоне (a[1], a[3]): для j в диапазоне (a[0], a[2]): ox.append(j) ой.append(я) защита основной(): пока правда: начало = [1, 16] цель = [63, 16] m.set_obstacle([(i, j) для i, j в zip(ox, oy)]) если шоу_анимация: plt.plot(ox, oy, ".k") plt.plot(start[0], start[1], "og") plt.plot(цель[0], цель[1], «xb») plt.axis("равно") start = m.map[start[0]][start[1]] конец = m.map[цель[0]][цель[1]] dstar = Dstar(м) rx, ry = dstar.run(начало, конец) если шоу_анимация: plt.plot(rx, ry, "-r") plt.show() если __name__ == '__main__': Препятствие_thread = threading.Thread(target=add_obstacles) препятствие_нить.start() основной() Вот ошибка:
*** Завершение работы приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «nextEventMatchingMask следует вызывать только из основного потока!» *** Стек вызовов первого броска: ( 0 CoreFoundation 0x00007ff811bed0b6 __ExceptionPreprocess + 242 1 libobjc.A.dylib 0x00007ff8116e2231 objc_Exception_throw + 48 2 AppKit 0x00007ff815a71cc9 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 4241 3 _macosx.cpython-311-darwin.so 0x0000000102f0451c wait_for_stdin + 364 4 Python 0x000000010252c9d6 my_fgets + 40 5 Python 0x000000010252c8d6 PyOS_StdioReadline + 171 6 Python 0x000000010252cb13 PyOS_Readline + 167 7 Python 0x0000000102619e5a встроенный_input_impl + 1491 8 Python 0x0000000102628363 _PyEval_EvalFrameDefault + 50514 9 Python 0x000000010262b961 _PyEval_Vector + 92 10 Python 0x00000001026291ce _PyEval_EvalFrameDefault + 54205 11 Python 0x000000010262b961 _PyEval_Vector + 92 12 Python 0x0000000102551260 метод_vectorcall + 426 13 Python 0x00000001026deefd thread_run + 163 14 Python 0x0000000102682983 pythread_wrapper + 36 15 libsystem_pthread.dylib 0x00007ff811a9f202 _pthread_start + 99 16 libsystem_pthread.dylib 0x00007ff811a9abab thread_start + 15 ) libc++abi: завершение работы из-за неперехваченного исключения типа NSException Я также попробовал добавить в ветку matplotlib, но это привело к почти такому же сбою. Итак, есть ли какие-либо решения относительно того, как правильно использовать потоки в Mac OS? Небольшое примечание: я новичок в программировании на Python, поэтому, вероятно, это неправильный способ сделать то, что я пытаюсь, поэтому любые предложения приветствуются.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на героку
Anonymous » » в форуме Python - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на героку
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Chromedriver и firefoxdriver аварийно завершают работу/останавливаются на героку
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
PHP Mac OS X pg_connect в PostgreSQL 15 аварийно завершает работу только в Apache HTTPD
Anonymous » » в форуме Php - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-