问题:执行完python代码后,调用
Py_Finalize
,再调用
Py_Initialize
,重新执行python代码,但第一行
PyRun_SimpleString("import cv2")
就报错
0x00007FF9853BC569 (_multiarray_umath.cp37-win_amd64.pyd)处(位于 mytest.exe 中)引发的异常:
0xC0000005: 写入位置 0x000000000000000A 时发生访问冲突。
这是C:\ProgramData\Anaconda3\Lib\site-packages\numpy\core下的一个pyd文件,opencv用到这个模块。显然,是第二次import cv2
引发改异常,说明Py_Finalize
并没有正确释放cv2的资源。经过查看官方文档,发现的确是Py_Finalize
的问题:Py_FinalizeEx() - Bugs and caveats
The destruction of modules and objects in modules is done in random order; this may cause destructors (__del__() methods) to fail when they depend on other objects (even functions) or modules. Dynamically loaded extension modules loaded by Python are not unloaded. Small amounts of memory allocated by the Python interpreter may not be freed (if you find a leak, please report it). Memory tied up in circular references between objects is not freed. Some memory allocated by extension modules may not be freed. Some extensions may not work properly if their initialization routine is called more than once; this can happen if an application calls Py_Initialize() and Py_FinalizeEx() more than once.
因此,应用程序里不要多次执行Py_Finalize
、Py_Initialize
,全局只能出现一对该操作
问题:执行完python代码后,调用Py_Finalize,再调用Py_Initialize,重新执行python代码,但第一行PyRun_SimpleString("import cv2")就报错0x00007FF9853BC569 (_multiarray_umath.cp37-win_amd64.pyd)处(位于 mytest.exe 中)引发的异常: 0xC0000005: 写入位置 ...
WIN10下用cmake和MSVC2019编译好的可用于python3.7.3的OpenCV4.1.0文件 "cv2.pyd",编译集成了opencv-contrib4.1.0
使用方式:若要给WIN10的python3.7.3安装OpenCV,可以将该文件下载,复制到python目录的"\Lib\site-packages\"下并
改名为“cv2.pyd”即可在python中 import CV2使用。
(cmake编译出的有debug个release两个版本的cv2.pyd,这里是release版)
第一,谈谈final, finally, finalize的区别。
最常被问到。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
这个问得很少。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
你千万别说一个是单数一个是复数。
第七,什么时候用assert。
API级的技术人员有可能会问这个。
第八,GC是什么? 为什么要有GC?
第九,String s = new String("xyz") 创建了几个String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1 s1 = s1 + 1 有什么错? short s1 = 1 s1 += 1 有什么错?
面试题都是很变态的,要做好受虐的准备。
第十二,sleep() 和 wait() 有什么区
Py_
Finalize引发如下异常:
0x00007FFFE5A28D10 (
python38.dll)处(位于 MTFform.exe 中)
引发的异常: 0xC0000005: 执行
位置 0x00007FFFE5A28D10
时发生访问冲突。
解决方案:
https://www.
pythonheidong.com/blog/article/407452/26929e97655b86229f72/
通过ctypes.cdll.LoadLibrary可以调用指定路径下的单个dll,但如果dll本身又依赖于多个别的dll,则会报错
OSError: [WinError 126] 找不到指定的模块
解决办法:
import ctypes,win32api,os
os.environ['path'] += ';I:\Mypath' #添加dll依赖库目录到系统环境
libc = ctypes...
Error importing optional module nbformat
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\Release\jsonschema\__init__.
py", line 31, in <module>
from importlib ...
KeyError Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\projections\__init__.py in get_projection_class(projection)
Debug调试运行至PyRun_SimpleFile时报错
0x00007FF9B9B22208 (ucrtbase.dll) (test.exe 中)处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数。
Rlease下运行正常不会报错
不要使用fopen,改用_Py_fopen
FILE *fp = _Py_fopen( "test.py", "r+" )...
5. [单选] 以下销毁对像abc的正确方法是( ) A abc=null B __del___ abc C __ destroy__ abc D __ finalize__ abc