“我可以在启动/关闭python脚本中使用fme对象吗?” https://knowledge.亚搏在线safe.com/questions/2926/may-i-use-fme-objects-in-startup-shutdown-python-s.html “我可以在启动/关闭Python脚本中使用FME对象吗?” Tfsrichard回答 https://knowledge.亚搏在线safe.com/answers/76507/view.html

我也遇到过。在我的情况下,del语句无法解决直到我在def中移动了代码。然后一切正常。

2018年8月16日星期四02:39:03 GMT Tfsrichard公司
takashi评论 https://knowledge.亚搏在线safe.com/comments/11695/view.html网站 简而言之;假设一个变量是最后一个引用对象的变量,python垃圾收集器似乎会在这些点上收集它(并尽快销毁它):-该变量已经成为引用另一个对象(例如。没有)。-变量已用del语句显式删除。-变量的作用域已完成。雾已经散去了:-) 2013年10月10日星期四08:15:30 GMT 高石 takashi评论 https://knowledge.亚搏在线safe.com/comments/11874/view.html网站 包含此启动脚本的工作区已完成,但未显示警告消息。----导入fmeobjects def startupprocess():logger=fmeobjects.fmelogfile()logger.logMessageString('startup')startupprocess()----
python垃圾收集器似乎会在作用域完成时销毁在本地作用域中创建的对象。这种风格可能比在全局范围内创建FME对象更好,以防止由于忘记销毁它们而导致的意外问题。
2013年10月10日星期四05:55:20 GMT 高石
takashi评论 https://knowledge.亚搏在线safe.com/comments/11015/view.html网站 分享来自Safe的答案。亚搏在线

保险箱答复亚搏在线 Python FMEObjasAPI是一个围绕本地C++ API的包装器,因此需要在Python中通常不执行一些垃圾收集。如果将fmeobjects对象设置为none,以便在不再需要时销毁它们,则会阻止fmesessions警告。 运行fme desktop时,这不是一个主要问题,因为fme在关闭后会自行清理,但可能会导致fme服务器出现问题,fme在服务器中持续运行。” 使用FME 2013 SP3进行测试,启动/关闭Python脚本----导入fmeobjects创建fme对象。licman=fmeobjects.fmelicensemanager()使用对象执行操作销毁对象(垃圾收集上的标志)licman=none--…警告信息消失。
结论当我们在启动/关闭python脚本中使用fme对象时,我们应该显式地标记垃圾收集(assign none),以便在使用后销毁它们。如果我们没有销毁它们,-在运行fme桌面时这不是主要问题-在运行fme服务器时可能会导致问题

我认为“del”语句也可以用来销毁对象。
2013年10月10日星期四02:39:17 GMT 高石
takashi评论 https://knowledge.亚搏在线safe.com/comments/10555/view.html网站 嗨,大卫,谢谢你的回答。
我确认如果使用del语句手动销毁实例,警告就会消失。
正如你所说,这确实不是蟒蛇。
我会要求保险箱,并在这里报告亚搏在线结果。高石
2013年10月8日星期二08:33:58 GMT 高石
大卫评论 https://knowledge.亚搏在线safe.com/comments/11800/view.html网站 嗨,高石,

我已经看到了这个警告很多,但从未真正经历过任何不稳定,我可以链接到这个问题。

但是,如果在脚本终止之前手动销毁fmeobject类实例,则警告似乎会消失。例子:

———-
import fmeobjects myobj=fmeobjects.fmelicensemanager()打印“hello world”
#手动释放fmelicensemanager实例del myobj
———-

在我看来,这在FME中是必要的,这有点不符合蟒蛇理论,但你看。你也许可以把这件事标记为保险箱的问题。亚搏在线

使用FME2013SP3测试

大卫
2013年10月8日星期二08:14:41 GMT 大卫