Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在numba.jit函数中使用格式化字符串?_Python_Jit_Numba - Fatal编程技术网

Python 如何在numba.jit函数中使用格式化字符串?

Python 如何在numba.jit函数中使用格式化字符串?,python,jit,numba,Python,Jit,Numba,各位程序员好 我想进入numba来加速我的python程序,所以我试图让我的代码使用jit函数。不幸的是,print()函数似乎无法处理内部的格式化字符串。函数的这一部分抛出错误(最后一行代码显示print()函数): @jit() def计算总节点函数实际数据,增强拓扑(自): 最小谐波=len(自身机器列表[0]。谐波列表VH\U v) 列出最长测量的测量值=[] 对于计数器,枚举中的机器(自列机器): 列出最长的测量值。附加(len(machine.harmonic\u list\u VH

各位程序员好

我想进入numba来加速我的python程序,所以我试图让我的代码使用
jit
函数。不幸的是,
print()
函数似乎无法处理内部的格式化字符串。函数的这一部分抛出错误(最后一行代码显示
print()
函数):

@jit()
def计算总节点函数实际数据,增强拓扑(自):
最小谐波=len(自身机器列表[0]。谐波列表VH\U v)
列出最长测量的测量值=[]
对于计数器,枚举中的机器(自列机器):
列出最长的测量值。附加(len(machine.harmonic\u list\u VH\u v[0][self.next\u state[counter][0]))#检查只需检查一个谐波,我们取第一个[0]
最长测量值=np.max(列出最长测量值)
THD_相位=[]
THD_相位_与_拓扑=[]
谐波状态所有相位=[]
对于相位范围(0,3):
所有时间步的总时间=[]
所有时间步的总时间,拓扑=[]
谐波状态相位=[]
对于范围内的时间(0,最长测量):
time1=time.perf_计数器()
如果self.consive_topology==True:
#时代力量(p_m1,…,p_m5)
#口琴2…40 für den zeitpunkt时间[h_m1_2-40,…,h_m5_2-40]
p_soll=np.zero(shape=len(机器的自列表)+1)
i\u harm\u amp=np.zero(形状=(len(self.list\u的机器)+1,self.list\u的机器[0]。最小的\u谐波-1))
i_harm_angle=np.zero(形状=(len(self.list_of_machines)+1,self.list_of_machines[0]。最小_谐波-1))
#填写矩阵
对于计数器,枚举中的机器(自列机器):
如果len(机器谐波列表VH v[0][self.next\u state[counter][0]])kW
i_harm_amp[machine.position_in_grid,:]=[machine.harmonic_list_chu v[x][self.next_state[counter][0]][-1][phase]*范围内x的数学sqrt(2)(0,machine.minimable_harmonmonic-1)]
i_harm_角度[machine.position_in_grid,:]=[machine.harmonic_list_CH_p[x][self.next_state[counter][0][-1][phase]用于范围内的x(0,machine.minimable_harmonmonic-1)]
其他:
p_soll[machine.position_in_grid]=machine.power[self.next_state[counter][0]*10**-3#功率已采样,不使用标准功率,功率单位为W->kW
i_harm_amp[machine.position_in_grid,:]=[machine.harmonic_list_CH_v[x][self.next_state[counter][0]][time_u][phase]*math.sqrt(2)表示范围内的x(0,machine.miniminable_harmonmonic-1)]\#*sqrt(2),用于将均方根值转换为振幅
i_harm_角度[machine.position_in_grid,:]=[machine.harmonic_list_CH_p[x][self.next_state[counter][0]][time_u][phase]用于范围内的x(0,machine.minimable_harmonmonic-1)]
THD\u假\u松弛\u节点=自身电网拓扑谐波负荷流量计算(p\u soll,i\u harm\u amp,i\u harm\u angle)
带有topo.append(THD\u fake\u slack\u节点)的\u all\u timesteps\u的总计\u THD\u
打印(f'{5}')
输出:

Traceback (most recent call last):
  File "C:/Users/Artur/Desktop/RL_framework/train.py", line 87, in <module>
    main()
  File "C:/Users/Artur/Desktop/RL_framework/train.py", line 77, in main
    duration = cf.training(episodes, env, agent, filename, topology=topology, enhanced_processing=enhanced_processing, CPUs_used=CPUs_used)
  File "C:\Users\Artur\Desktop\RL_framework\help_functions\custom_functions.py", line 163, in training
    save_interval = enhanced_training(episodes=range(episodes), env=env, agent=agent, log_data_qvalues=log_data_qvalues, log_data=log_data, filename=filename, CPUs_used=CPUs_used)
  File "C:\Users\Artur\Desktop\RL_framework\help_functions\custom_functions.py", line 111, in enhanced_training
    next_state, reward = env.step_enhanced(action, state)
  File "C:\Users\Artur\Desktop\RL_framework\help_functions\environment_machines.py", line 152, in step_enhanced
    self.calculate_total_node_THD_func_real_data_with_topo_enhanced()                                                # THD_plant calculation with considering grid topo
  File "C:\Users\Artur\Anaconda\lib\site-packages\numba\core\dispatcher.py", line 404, in _compile_for_args
    error_rewrite(e, 'unsupported_error')
  File "C:\Users\Artur\Anaconda\lib\site-packages\numba\core\dispatcher.py", line 344, in error_rewrite
    reraise(type(e), e, None)
  File "C:\Users\Artur\Anaconda\lib\site-packages\numba\core\utils.py", line 80, in reraise
    raise value.with_traceback(tb)
numba.core.errors.UnsupportedError: Failed in object mode pipeline (step: analyzing bytecode)
Use of unsupported opcode (FORMAT_VALUE) found

File "help_functions\environment_machines.py", line 572:
    def calculate_total_node_THD_func_real_data_with_topo_enhanced(self):
        <source elided>

                    print(f'{5}')
                    ^


Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“C:/Users/Artur/Desktop/RL_framework/train.py”,第87行,在
main()
文件“C:/Users/Artur/Desktop/RL_framework/train.py”,第77行,主目录
持续时间=cf.training(剧集、环境、代理、文件名、拓扑=拓扑、增强的处理=增强的处理、使用的CPU=使用的CPU)
文件“C:\Users\Artur\Desktop\RL\u framework\help\u functions\custom\u functions.py”,第163行,在培训中
保存\u间隔=增强的\u培训(剧集=范围(剧集),环境=环境,代理=代理,日志\u数据\u qvalues=日志\u数据\u qvalues,日志\u数据=日志\u数据,文件名=文件名,使用的CPU=使用的CPU)
文件“C:\Users\Artur\Desktop\RL\u framework\help\u functions\custom\u functions.py”,第111行,在增强型\u培训中
下一个状态,奖励=环境步骤增强(操作,状态)
文件“C:\Users\Artur\Desktop\RL\u framework\help\u functions\environment\u machines.py”,第152行,步骤\u
self.compute_total_node_THD_func_real_data_with_topo_enhanced()#THD_plant calculation with the grid topo
文件“C:\Users\Artur\Anaconda\lib\site packages\numba\core\dispatcher.py”,第404行,位于\u compile\u for \u args
错误\u重写(例如,“不支持的\u错误”)
文件“C:\Users\Artur\Anaconda\lib\site packages\numba\core\dispatcher.py”,第344行,错误\u重写
重放(类型(e),e,无)
文件“C:\Users\Artur\Anaconda\lib\site packages\numba\core\utils.py”,第80行,重新登录
通过_回溯(tb)提升值
numba.core.errors.UnsupportedError:在对象模式管道中失败(步骤:分析字节码)
发现使用了不支持的操作码(格式\值)
文件“help\u functions\environment\u machines.py”,第572行:
def计算总节点函数实际数据,增强拓扑(自):
打印(f'{5}')
^
进程已完成,退出代码为1
当我使用普通字符串->
print(5)
时,它可以工作,但不能用于格式化字符串。有没有一种方法可以使用字符串格式


提前谢谢。

似乎f字符串不起作用,但格式化字符串起作用:


print({val}.format(val))

这似乎只适用于对象模式,而不适用于nopython模式
Traceback (most recent call last):
  File "C:/Users/Artur/Desktop/RL_framework/train.py", line 87, in <module>
    main()
  File "C:/Users/Artur/Desktop/RL_framework/train.py", line 77, in main
    duration = cf.training(episodes, env, agent, filename, topology=topology, enhanced_processing=enhanced_processing, CPUs_used=CPUs_used)
  File "C:\Users\Artur\Desktop\RL_framework\help_functions\custom_functions.py", line 163, in training
    save_interval = enhanced_training(episodes=range(episodes), env=env, agent=agent, log_data_qvalues=log_data_qvalues, log_data=log_data, filename=filename, CPUs_used=CPUs_used)
  File "C:\Users\Artur\Desktop\RL_framework\help_functions\custom_functions.py", line 111, in enhanced_training
    next_state, reward = env.step_enhanced(action, state)
  File "C:\Users\Artur\Desktop\RL_framework\help_functions\environment_machines.py", line 152, in step_enhanced
    self.calculate_total_node_THD_func_real_data_with_topo_enhanced()                                                # THD_plant calculation with considering grid topo
  File "C:\Users\Artur\Anaconda\lib\site-packages\numba\core\dispatcher.py", line 404, in _compile_for_args
    error_rewrite(e, 'unsupported_error')
  File "C:\Users\Artur\Anaconda\lib\site-packages\numba\core\dispatcher.py", line 344, in error_rewrite
    reraise(type(e), e, None)
  File "C:\Users\Artur\Anaconda\lib\site-packages\numba\core\utils.py", line 80, in reraise
    raise value.with_traceback(tb)
numba.core.errors.UnsupportedError: Failed in object mode pipeline (step: analyzing bytecode)
Use of unsupported opcode (FORMAT_VALUE) found

File "help_functions\environment_machines.py", line 572:
    def calculate_total_node_THD_func_real_data_with_topo_enhanced(self):
        <source elided>

                    print(f'{5}')
                    ^


Process finished with exit code 1