Python 需要帮助缩短绘制怪物函数的时间吗

Python 需要帮助缩短绘制怪物函数的时间吗,python,python-3.x,sympy,Python,Python 3.x,Sympy,我正在绘制以下函数: L(L=0)在代码中是非常自解释的,代码分为两个条件:B1和B2 我希望优化我的代码,使生成图形的速度大大加快。Symphy建议使用autowrap模块,我尝试使用binary_函数和lambdify(此处未显示)进行此操作,但没有看到明显的变化。 如果有人能帮忙,那将非常感激 另一方面,你不能在真正需要MathJax的站点之外使用MathJax(或任何其他LaTeX衍生物),因为它会对页面加载造成显著延迟。请尝试使用enumerate()而不是range(len())。

我正在绘制以下函数:

L(L=0)在代码中是非常自解释的,代码分为两个条件:B1和B2

我希望优化我的代码,使生成图形的速度大大加快。Symphy建议使用autowrap模块,我尝试使用binary_函数和lambdify(此处未显示)进行此操作,但没有看到明显的变化。

如果有人能帮忙,那将非常感激

另一方面,你不能在真正需要MathJax的站点之外使用MathJax(或任何其他LaTeX衍生物),因为它会对页面加载造成显著延迟。请尝试使用
enumerate()
而不是
range(len())
。这是一个旁注,我怀疑它会提高性能。不过,一个快速的建议是,您可以在这里添加一些计时器,以了解它从何处开始减速,或者是什么花费了这么长的时间,这样,您就可以查看单个代码块,因为可能不是整个代码导致了问题,而是一个特定的函数或循环。您能以某种方式处理这个问题吗?我认为默认情况下可以使用1000个左右的线程。如果你不关心它返回数字的顺序,那就是。你们对sympy.utilities.autowrap中的ufunctify有什么看法?
import numpy as np 
from mpmath import *
from sympy import *
import matplotlib.pyplot as plt

ulist = np.random.uniform(size=40)

sigma = 0.05 

somelist = [] 

def fsubk(t0): 
    somelist.clear()   
    for i in range(0,len(ulist)): 
        somelist.append(float(exp((ulist[i]-t0)/(sigma/sqrt(2)))*nsum(lambda k: exp(-k/(sigma/sqrt(2))),[1,inf]))) 
        somelist.append(float(exp((t0-ulist[i])/(sigma/sqrt(2)))*nsum(lambda k: exp(k/(sigma/sqrt(2))),[-inf,-1]))) 
        if t0 >= ulist[i]:  
            somelist.append(float(exp((ulist[i]-t0)/(sigma/sqrt(2))))) # B1 condition
        else:
            somelist.append(float(exp((t0-ulist[i])/(sigma/sqrt(2))))) # B2 condition
return float(np.sum(somelist)*(1/(sigma*sqrt(2)))+10)

vfunc = np.vectorize(fsubk)
x = np.linspace(0,0.9999999999999,100)
y = vfunc(x)
plt.plot(x,y)
plt.show()