在python线程中是否限制了内存使用?

问题描述 投票:3回答:1

Python 2.7。我有一个用Tkinter编写的GUI,它创建一个单独的线程来运行任务,以便GUI在运行时不被阻止。在任何地方都没有锁定:

class MainWindow(Tkinter.Tk):

    def __init__(self):
        Tkinter.Tk.__init__(self)
        self.initialize()

    def initialize(self):
        # Configure the window, buttons etc

    def button_function(self):
        t = threading.Thread(target=self.myfunction)
        t.daemon = True
        t.start()
        return

    def myfunction(self);
        # Calls a function in an imported module

当我运行它时,GUI挂起,然后在没有回溯的情况下崩溃。如果我在主线程中调用该函数它不会崩溃(尽管GUI在myfunction运行时'冻结'):

    def button_function(self):
        self.myfunction()   # Runs fine
        return

在运行时,函数本身有时可以在内存中存储几MB。注释掉较大的变量可以使函数成功返回。

我应该补充一点,子线程不会调用GUI函数。 GUI只是一个单独的命令行函数的包装器。

我怀疑正确的解决方案是将较大的变量写入临时文件,还是重新设计函数以更频繁地返回主线程。

子线程中的内存使用是否有限制,如果有,这是如何配置的?

python multithreading python-2.7 memory
1个回答
2
投票

子线程中没有内存限制。

(我鼓励favoretti或者mcy发布一个类似的答案接受,所以这并没有加入无法回答的问题的无限队列.OP回答他自己的问题没有错。)

© www.soinside.com 2019 - 2024. All rights reserved.