JPype не будет компилироваться должным образом при запуске кода дважды - PullRequest
0 голосов
/ 04 октября 2018

мой код:

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 Ответ

0 голосов
/ 04 октября 2018

Проверьте isJVMStarted () до startJVM () , поэтому это будет что-то вроде:

if jpype.isJVMStarted():
    return

jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=" + jarLocation,"-Xmx256m")

Так что, если вы запускаете дважды, а JVM запускает этокод не будет инициализировать его снова

...