Ich versuche, das FBX-Python-Modul von Autodesk zu verwenden, aber es scheint, ich kann keine Operation fädeln. Dies scheint aufgrund der GIL nicht gelöst zu sein. Hat jemand das gleiche Problem gefunden oder mache ich etwas falsch? Wenn ich sage, dass es nicht funktioniert, meine ich, dass der Code den Thread nicht freigibt und ich nicht in der Lage bin, etwas anderes zu tun, während der fbx-Code läuft.Autodesk Fbx Python und Threading
Es gibt nicht viel Code zum Posten, nur um zu wissen, ob es jemandem passiert ist, es zu versuchen.
Update:
hier ist der Beispielcode, bitte beachten Sie, jede FBX-Datei so etwas wie 2GB ist
import os
import fbx
import threading
file_dir = r'../fbxfiles'
def parse_fbx(filepath):
print '-' * (len(filepath) + 9)
print 'parsing:', filepath
manager = fbx.FbxManager.Create()
importer = fbx.FbxImporter.Create(manager, '')
status = importer.Initialize(filepath)
if not status:
raise IOError()
scene = fbx.FbxScene.Create(manager, '')
importer.Import(scene)
# freeup memory
rootNode = scene.GetRootNode()
def traverse(node):
print node.GetName()
for i in range(0, node.GetChildCount()):
child = node.GetChild(i)
traverse(child)
# RUN
traverse(rootNode)
importer.Destroy()
manager.Destroy()
files = os.listdir(file_dir)
tt = []
for file_ in files:
filepath = os.path.join(file_dir, file_)
t = threading.Thread(target=parse_fbx, args=(filepath,))
tt.append(t)
t.start()
Bitte teilen Sie auch den Code, der den Thread nicht freigibt. Sie werden eine bessere Antwort bekommen. Im Moment werden wir nicht einmal eine Vorstellung davon haben, was Sie tun oder versuchen zu erreichen. –
Der Interpreter führt aufgrund der GIL niemals Python-Code gleichzeitig aus. Die GIL wird im Allgemeinen nur freigegeben, wenn E/A stattfindet und der aktuelle Thread darauf wartet, dass sie abgeschlossen wird. Währenddessen wird allen wartenden Threads eine Chance zum Laufen gegeben. Ihr Problem kann also nichts mit der Tatsache zu tun haben, dass Sie das fbx-Modul verwenden. – martineau
@MoinuddinQuadri, Beispielcode wurde hochgeladen. – hdd