2013-05-16 51 views
0

为了给我的Python库添加更多工具,我开始了一个宠物项目 - 个人时间管理应用ThymePython:多线程中的CherryPy和Win32 API?

目前,该应用程序由两个进程组成:每500ms,一个单独的进程通过win32ui获得焦点窗口,并通过SQLAlchemy将其写入SQLite数据库;而主进程启动了一个处理应用程序UI的CherryPy web服务器。

但是,这两个Python进程的内存总占用空间约为30MB,我希望减少这个数量。我知道做到这一点的一种方法是使用多线程 - 但我真的不知道它是否值得打开那些蠕虫。我的用例适用于多线程方法吗?

+1

多线程如何减少你的内存占用? –

+0

@RobertHarvey我的印象是这两个线程会以某种方式在相同的Python可执行文件下运行,因此使用的内存少于两个独立的'python.exe'。看到http://stackoverflow.com/questions/4214775/reducing-memory-footprint-with-multiprocessing,http://stackoverflow.com/a/3046201/425219 – egasimus

+0

哦,我明白了。那么,这取决于你想要做什么。如果这是某种编组方式,其中第二个可执行文件可能在其他某台机器上运行,则在同一程序中有两个线程无法工作。坦率地说,我不确定为什么你需要在同一个可执行文件中进行轮询,除非有多个用户共享同一个数据库。另外,现在真的有30MB,新的机器起始于8GB的RAM? –

回答

0

让我们看看:你已经有两个程序可以工作,并且你想在同一个进程中的线程中运行。一个非常简单的方法是简单地将两者复制在一起,然后在单独的线程中运行每个main()。问题的复杂程度取决于两者之间的共享状态数量。我看到的共享状态是标准输入和标准输出,但另外两者之间的通信是通过SQLite数据库进行的。如果该数据库的实现方式是程序的两个独立部分不会通过全局状态相互影响,则应该没问题。

我的建议:试试吧!