从CPython迁移到Jython

从CPython迁移到Jython,第1张

从CPython迁移到Jython

我将从其他答案和我的经验中收集的Wiki开始。随意编辑和添加内容,但请尝试遵循实用建议,而不要列出损坏的内容。这是与Jython网站不同的旧列表。

资源管理

Jython不使用引用计数,因此资源在被垃圾回收时被释放,这要晚于等效的CPython程序

  • open('file').read()
    不会自动关闭文件。更好地使用
    with open('file') as fp
    成语。
  • 在Jython代码中很晚才调用__ del __方法,而不是在删除最后一个对该对象的引用之后立即调用。
MySQL整合

mysqldb
是交流模块,因此无法在jython中使用。相反,您应该使用
com.ziclix.python.sql.zxJDBC
Jython随附的。

替换以下MySQLdb代码

connection = MySQLdb.connect(host, user, passwd, db, use_unipre=True, chatset='utf8')

带有:

url = "jdbc:mysql://%s/%s?useUnipre=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" % (host, db)connections = zxJDBC.connect(url, user, passwd, "com.mysql.jdbc.Driver")

您还需要将全部替换

_mysql_exception
zxJDBC

最后,您需要将查询占位符从替换

%s
?

统一码
  • 您无法在Jython中表达非法的unipre字符。尝试类似的 *** 作
    unichr(0xd800)
    会导致异常,并且
    u'ud800'
    在代码中包含文字会造成严重破坏。
遗失的东西
  • 当然,C模块不可用。
    • 所以没有NumPy或SciPy。
  • os.spawn *函数未实现。而是使用subprocess.call。
性能
  • 对于大多数工作负载,Jython将比CPython慢​​得多。报告速度要慢3到50倍。
社区

Jython项目仍然有效,但发展并不迅速。在
开发邮件列表
有一个每月20消息,并且似乎有大约只有2开发人员commiting码最近。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5673339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存