JPype не будет компилироваться должным образом при повторном запуске кода
Мой код:
jarLocation = "C:/Users/LahiruGunawardhana/Desktop/New folder/info/infodynamics.jar"
# Start the JVM (add the "-Xmx" option with say 1024M if you get crashes due to not enough memory space)
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=" + jarLocation,"-Xmx256m")
teCalcClass = jpype.JPackage("infodynamics.measures.discrete").TransferEntropyCalculatorDiscrete
teCalc = teCalcClass(2,1)
teCalc.initialise()
noOfEdges=0
for i in range(0,N-1):
for j in range(i+1,N):
# print(i,"-->",j)
if(nodes_connectivity(j,i) | nodes_connectivity(i,j)):
sss = [int(i) for i in SsourceArray]
ddd = [int(i) for i in DdestArray]
teCalc.addObservations(sss, ddd)
e=teCalc.computeAverageLocalOfObservations()
jpype.shutdownJVM()
Я получаю значения только один раз для этого кода. когда я запускаю этот код во второй раз, я получаю сообщение об ошибке:
_jpype.startup(jvm, tuple(args), True)
OSError: JVM is already started
Каким-то образом, когда я перезапускаю консоль python для каждого шага, она дает значения.
1 ответ
Решение
Проверьте isJVMStarted() перед startJVM(), чтобы это было что-то вроде:
if jpype.isJVMStarted():
return
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=" + jarLocation,"-Xmx256m")
Так что, если вы запускаете два раза, а JVM запускает этот код, он не будет инициализироваться снова