我有一些从C#应用程序中调用的Iron
Python代码.
这段代码工作正常,直到我决定更改一个函数来运行在一个线程中.
当在python线程中调用numpy函数时,抛出一个InsufficientMemoryException异常.
我搜索了解决方案,但没有找到.有人可以解释为什么会发生这种情况吗?
这段代码工作正常,直到我决定更改一个函数来运行在一个线程中.
当在python线程中调用numpy函数时,抛出一个InsufficientMemoryException异常.
我搜索了解决方案,但没有找到.有人可以解释为什么会发生这种情况吗?
我认为只有当我有两个使用numpy的线程时,才发生这种情况
我运行这样的代码:
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)
我得到这个例外:
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,0]) MemoryError: Exception of type 'System.InsufficientMemoryException' was thrown.
谢谢
更新13/07/14
我得到这个例外,即使我只运行一个线程,并通过IronPython解释器,没有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",**self.kwargs) File "c:\workspace\my_python_script.py",line 6,0]) MemoryError: Exception of type 'System.InsufficientMemoryException' was thrown.