python 调用DLL的问题

调用DLL代码如下:---------------------------------------------------------------------------... 调用DLL代码如下:
----------------------------------------------------------------------------
#coding:utf-8
import ctypes
dll = ctypes.windll.LoadLibrary('getcode.dll' )
def localgetcode(pic):
try:
code = dll.local(pic,'yunfile.cds','hycsxs')
code = ctypes.string_at(code, -1)
if code=='get error' or code=='load error':
return ''
return code
except:
return ''
-------------------------------------------------------------------------
主程序启动20个线程去调用这段代码,时间长了主程序运行结束时经常会出现内存错误,这是怎么回事?运行的时间短的话就没有这个问题....(PS :上面的getcode.dll是我自己写的DLL这个会调用另外一个叫"AntiVC.dll")
求高人指教。。。。。。
展开
 我来答
bdwisyou7d
2014-08-16 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1071万
展开全部
那就是有内存泄露。内存没有释放。原因可能是多种。一种是你的DLL或者是AntiVC出了错。另外一种是ctypes出错。其中返回的内容没有释放内存。也许只有10个字节,但是长期积累还是很可观。

如果解决这个问题,就是稳定的程序,怎么用都不会坏。

还有一个保守的办法。如果你调用DLL的频率不是特别快。比如每秒不超过2000次。那么你可以将这个功能封装在一个服务进程里。线程再通过接口去访问。该 服务进程即使内存溢出崩溃了。也会自动重新启动。这样你的20个线程基本上只需要重试几次,等服务进程重新启动完成后,就可以获得结果。基本不影响使用。操作系统也很安全。因为进程退出后,所有的遗留错误都会清空。
不芷若0I9
2018-07-09
知道答主
回答量:1
采纳率:0%
帮助的人:851
展开全部
我碰到的问题是django 调用dll 多个同时调用崩溃 ,我可以在运行dll 的方法添加一个线程锁就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式