我的应用程序有一个自己使用BASS库的自定义音频库。在Python中追踪被忽略的异常?
我在整个程序中创建和销毁BASS流对象。
当我的程序退出时,随机(我还没有想出的格局还没有)我得到我的控制台上通知如下:
Exception TypeError: "'NoneType' object is not callable" in <bound method stream.__del__ of <audio.audio_player.stream object at 0xaeda2f0>> ignored
我的音频库(音频/ audio_player.py [类流] )包含一个创建BASS流对象的类,然后允许代码对其进行操作。当这个类被破坏时(例如在del例程中)它调用BASS_StreamFree来清除BASS可能分配的任何资源。
(audio_player.py)
from pybass import *
from ctypes import pointer, c_float, c_long, c_ulong, c_buffer
import os.path, time, threading
# initialize the BASS engine
BASS_Init(-1, 44100, 0, 0, None)
class stream(object):
"""Represents a single audio stream"""
def __init__(self, file):
# check for file existence
if (os.path.isfile(file) == False):
raise ValueError("File %s not found." % file)
# initialize a bass channel
self.cAddress = BASS_StreamCreateFile(False, file, 0, 0, 0)
def __del__(self):
BASS_StreamFree(self.cAddress)
def play(self):
BASS_ChannelPlay(self.cAddress, True)
while (self.playing == False):
pass
..more code..
我根据这条消息的第一个倾向是,在我的代码的某个地方,我流的类的实例被孤立(不再分配给一个变量)和Python仍正在尝试在应用程序关闭时调用它的del函数,但在尝试时该对象已消失。
此应用程序确实使用wxWidgets,因此涉及一些线程。我没有给出实际变量名的事实使我相信我在前一段中所说的内容。
我不确定究竟哪个代码与调试相关。该信息看起来似乎无害,但我不喜欢在最终生产代码中出现“忽略”异常的想法。
是否有任何提示任何人有调试呢?
“wxWidgets”呃哦,当你不期待它时,希望东西消失,除非你做更多的工作。 –