gpt4 book ai didi

python - 在嵌入式 Python 中使用 locale.setlocale 而不破坏 C 线程中的文件解析

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:05 24 4
gpt4 key购买 nike

我们正在使用第三方中间件产品,它允许我们在嵌入式 Python 解释器中编写代码,并公开了一个我们可以调用的 API。其中一些 API 调用允许我们加载各种文件,加载代码是用 C 语言实现的。文件加载发生在一个单独的线程中,并在数据可用时回调到 Python。到目前为止,一切都很好。

我们一直在 i14ing(呵呵)我们的产品,我们想做的一件事是根据用户的区域设置格式化面向用户的数字输出。所以,从 Python,我们这样做:

import locale
locale.setLocale( locale.LC_ALL, '' )

现在,这可行了(因为面向用户的数字已针对其区域设置正确格式化)。但是,如果用户的区域设置不同于默认的 C 区域设置,则随后加载的任何文件都将返回不正确的数据,这可能是因为所有字符串到 float 的转换都受到了影响,一直到金属。

我们无法通过实现可识别区域设置的文件加载来解决此问题,因此我们当前的解决方法是仅在为用户格式化输出时设置区域设置,然后再将其设置回来。也就是说,类似于:

import locale
currentLocale = locale.getLocale( locale.LC_ALL )
locale.setLocale( locale.LC_ALL, '' )
displayNumbersToTheUser()
locale.setlocale( locale.LC_ALL, currentLocale )

这看起来有点笨拙,我想知道这是否是为用户格式化区域设置感知输出的常用方法?我的另一个担忧是,这显然不是线程安全的,因此如果语言环境更改时任何文件解析发生在单独的线程中,我们可能仍然会遇到问题。

欢迎提供有关最佳实践的任何信息 - 我对这类事情没有太多经验。

最佳答案

在多个线程开始运行后设置语言环境可能会产生意想不到的结果。除非我能想出更巧妙的方法,否则我可能只是将文件加载和用户界面拆分为单独的进程,通过管道或文件套接字进行通信。

关于python - 在嵌入式 Python 中使用 locale.setlocale 而不破坏 C 线程中的文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/140295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com