首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于预导入模块的Python线程

用于预导入模块的Python线程
EN

Stack Overflow用户
提问于 2010-01-15 21:27:40
回答 4查看 2.2K关注 0票数 4

我正在编写一个科学计算领域的Python应用程序。目前,当用户使用图形用户界面并启动新的物理模拟时,解释器会立即导入此模拟所需的几个模块,如TraitsMayavi。这些模块很重,而且导入时间太长,用户必须等待大约10秒才能继续,这是很糟糕的。

我想到了一些可以弥补这个问题的方法。我将描述它,也许其他人已经实现了它,如果是这样,请给我一个链接。如果不是,我可能会自己去做。

我想要的是一个单独的线程,它将异步导入模块。它可能是threading.Thread的一个子类。

下面是一个使用示例:

代码语言:javascript
复制
importer_thread = ImporterThread()
importer_thread.start()

# ...

importer_thread.import('Mayavi')
importer_thread.import('Traits')
# A thread-safe method that will put the module name
# into a queue which the thread in an inifine loop

# ...

# When the user actually needs the modules:
import Mayavi, Traits
# If they were already loaded by importer_thread, we're good.
# If not, we'll just have to wait as usual.

你知道有这样的事情吗?如果没有,你对设计有什么建议吗?

EN

Stack Overflow用户

发布于 2010-01-15 21:31:46

这样做的问题是,导入仍然必须完成,然后才能使用。根据第一次使用它们的时间,应用程序可能仍然必须阻塞10秒,然后才能启动。更有效的方法是对模块进行概要分析,并找出它们为什么需要这么长时间才能导入。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2071786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档