有时Python是否只是不够快地完成一项任务?

问题描述

我注意到缺乏用Python编写的,良好的soundfont兼容合成器。因此,大约一个月前,我自己开始了一些工作(供参考,it's here)。做到这一点也是我为自己设定的挑战。

我不断地遇到相同的问题,总结如下:

  1. 要播放声音,必须将具有几乎恒定流率的数据流发送到音频设备
  2. 要根据用户输入实时合成声音,可以使用几乎没有缓冲
  3. 因此,一个“缓冲区生成循环”所花费的时间是有上限的。
  4. Python作为一种语言, 不能足够快地运行以在此时间限制内合成声音

问题不是我的代码,或者至少,我尝试将其优化到极限级别-在代码的时间敏感部分中使用局部变量,避免使用点来循环访问变量,使用{{1 }}进行迭代,使用itertools之类的预编译宏,更改线程切换参数,进行尽可能少的计算,进行近似计算,此列表继续存在。

使用Pypy会有所帮助,但不久之后,这种情况就会开始困扰。

值得注意的是,目前(最多)我的合成器可以同时演奏约25个音符。但这还不够。 Fluidsynth,用C编写的合成器,对每个乐器的最大音符数上限为128个音符。它还一次支持多种乐器。

我的断言是Python 根本无法使用来编写合成器吗?还是我错过了一些非常重要的东西?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...