Ho un codice IronPython
chiamato dall'interno di un'applicazione C#
.
Questo codice ha funzionato correttamente finché non ho deciso di modificare una funzione per l'esecuzione in una discussione.
quando le funzioni di numpy richiamano in un thread python viene generata un'eccezione InsufficientMemoryException
.
Ho cercato soluzioni ma non ho trovato. qualcuno può spiegare perché sta accadendo e come posso risolverlo?IronPython throw InsufficientMemoryException quando si utilizza numpy nei thread
penso che questo sta accadendo solo quando ho due thread che utilizzano numpy
corro codice come questo:
C#:
_python.functionA(); # _python was created with "Python.CreateEngine()"
_python.functionA(); # twice on purpose
Python:
my_python_script .py
import threading
import time
import numpy
def blah():
print numpy.array([100,100,0])
def functionA():
t = threading.Timer(0,blah)
t.start()
time.sleep(2)
E ho avuto questa eccezione:
Exception in thread Thread-1:
Traceback (most recent call last):
File "c:\Program Files\IronPython 2.7.1\Lib\threading.py", line 552, in _Thread__bootstrap_inner
self.run()
File "c:\Program Files\IronPython 2.7.1\Lib\threading.py", line 756, in run
self.function(*self.args, **self.kwargs)
File "C:\workspace\my_python_script.py", line 113, in blah
print numpy.array([100,100,0])
MemoryError: Exception of type 'System.InsufficientMemoryException' was thrown.
Grazie
UPDATE 13/07/14
ottengo questa eccezione, anche quando ho eseguito un solo thread e tramite l'interprete IronPython, senza C#:
C:\>"c:\Program Files\IronPython 2.7.1\ipy.exe"
IronPython 2.7.1 (2.7.0.40) on .NET 4.0.30319.18063
Type "help", "copyright", "credits" or "license" for more information.
>>> execfile(r"c:\workspace\my_python_script.py")
>>> functionA()
>>> Exception in thread Thread-1:
Traceback (most recent call last):
File "c:\Program Files\IronPython 2.7.1\Lib\threading.py", line 552, in _Thread__bootstrap_inner
self.run()
File "c:\Program Files\IronPython 2.7.1\Lib\threading.py", line 756, in run
self.function(*self.args, **self.kwargs)
File "c:\workspace\my_python_script.py", line 6, in blah
print numpy.array([100,100,0])
MemoryError: Exception of type 'System.InsufficientMemoryException' was thrown.
Quanti processori hai? – gobrewers14
Non sono sicuro adesso, sul mio computer di lavoro. Ma credo che sia almeno doppio, forse quad. È importante come esattamente? – Elisha
È possibile leggere [questo] (http://support.microsoft.com/kb/974065) e [questo] (http://msdn.microsoft.com/en-us/library/at1stbec.aspx) e vedere se che risolve il tuo problema. – gobrewers14