如何提高Excel中xlwings UDF的速度?

在Python 3中,我通过xlwings在Excel中使用UDFs来计算公式。 该公式计算超过4000次,大约需要25秒来刷新工作表。 以下公式为例。 该公式在每个Excel单元格的Excel中使用公式参考单元格=test_1(B20,C20,D20) 。 VBA优化连接设置设置为true, OPTIMIZED_CONNECTION = True

 @xw.func def test_1(x, y, z): a = x**2 + y**2 + z**2 return a 

在VBA或Excel中计算相同的公式几乎是瞬间的。 所以我的问题是为什么这么慢,有没有办法提高速度?

*新的信息

使用数组公式要比多次调用UDF快得多。 下面的公式与原始公式做同样的事情,但将范围作为input并返回一个范围。

 @xw.func @xw.ret(expand='table') def test_array(x, y, z): a = np.array(x)**2 + np.array(y)**2 + np.array(z)**2 return np.transpose(a[np.newaxis]) 

如果可以使用,这是一个很好的解决方法。 但是,如果无法完成,问题仍然存在。