使用语言环境.setlocale在嵌入式Python中不中断C线程的文件解析

2024-05-15 06:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我们使用的是第三方中间件产品,它允许我们在一个嵌入式Python解释器中编写代码,并公开一个可以调用的API。其中一些API调用允许我们加载各种类型的文件,加载代码是用C实现的。文件加载在一个单独的线程中进行,当数据可用时调用Python。到目前为止,一切顺利。在

我们一直在开发(heh)我们的产品,我们想做的一件事是根据用户的语言环境设置格式化面向用户的数字输出。因此,在Python中,我们执行以下操作:

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

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

我们无法通过实现支持区域设置的文件加载来解决这一问题,因此我们当前的解决方法是在格式化用户输出时只设置区域设置,然后在之后再次设置。也就是说,类似于:

^{pr2}$

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

任何关于最佳实践的信息都是非常感谢的-我在这方面没有太多的经验。在


Tags: 中间件文件数据方法代码用户api语言
1条回答
网友
1楼 · 发布于 2024-05-15 06:33:53

在多个线程开始操作后设置区域设置可能会产生意外结果。除非我能想出一种更微妙的方法,否则我可能只会将文件加载和用户界面分成单独的进程,通过管道或文件套接字进行通信。在

相关问题 更多 >

    热门问题