У меня есть небольшая проблема с многопоточным скриптом python в игровом движке blender. Работает хорошо, но когда я останавливаю игру, она вызывает некоторые исключения и иногда падает.Python multithreading - закрывающая нить в Blender
from bge import logic
import time
from threading import Thread
def init():
if not hasattr(logic, 'init'):
logic.init = 0
logic.thread = new()
logic.thread.start()
logic.thread.restart()
class new(Thread):
def __init__(self):
self.Thread = Thread
self.Thread.__init__(self)
def run(self):
number = 0
while 1:
number += 1
print(number)
try:
main()
time.sleep(0.1)
except:
break
def restart(self):
self.Thread.__init__(self)
def main(): #this part isn't important now ...
cam = bge.logic.getCurrentScene().active_camera
obj = bge.logic.getCurrentController().owner
obj.worldPosition.x = cam.worldPosition.x
obj.worldPosition.y = cam.worldPosition.y
Консоль пишет:
Unhandled exception in thread started by <bound method new._bootstrap of <new(Th
read-80, initial)>>
Traceback (most recent call last):
File "C:\Program Files (x86)\Blender Foundation\Blender\2.64\python\lib\thread
ing.py", line 709, in _bootstrap
self._bootstrap_inner()
File "C:\Program Files (x86)\Blender Foundation\Blender\2.64\python\lib\thread
ing.py", line 784, in _bootstrap_inner
with _active_limbo_lock:
AttributeError: __exit__
Я был бы рад, если кто-то может найти то, что случилось с ним. Спасибо
Можете ли вы включить исключения, которые вы задаете в своем вопросе? Кроме того, 'self.Thread = Thread' просто выглядит странно. Для чего эта линия? – phihag
Sure, Необработанное исключение в потоке, начатое с помощью> Traceback (последний последний звонок): Файл «C: \ Program Files (x86) \ Blender Foundation \ Blender \ 2.64 \ python \ lib \ thread ing.py ", строка 709, в _bootstrap self._bootstrap_inner() Файл" C: \ Program Files (x86) \ Blender Foundation \ Blender \ 2.64 \ python \ lib \ thread ing.py ", строка 784, в _bootstrap_inner с _active_limbo_lock: AttributeError: __exit__ –
Z4urce
Лучше добавьте его в вопрос, чтобы он был отформатирован. – phihag