我对Python中的线程很陌生,并且有一些初学者的问题。
当使用Python threading
模块启动超过50个线程时,我开始获得MemoryError
。线程本身非常纤薄,并且内存不足,所以看起来线程的开销会导致内存问题。
threading
模块在Python代码中运行的最大线程数是多少?你有没有做过这个号码的技巧?threading
模块时是否还有其他注意事项?答案 0 :(得分:3)
您的问题无法以一般方式回答,因为线程的良好使用总是取决于要解决的具体问题。你也没告诉我们你正在使用哪个Python版本,所以我假设你使用“默认”CPython而不是IronPython或类似的东西。给你一些提示和想法,以进一步思考你的问题:
答案 1 :(得分:1)
答案 2 :(得分:1)
已知Global Interpreter Lock对标准CPython的性能限制有很大影响。因此multiprocessing module注意到:
多处理是一个包 使用。支持生成进程 API类似于线程模块。 多处理包提供 本地和远程并发, 有效地踩踏全球 解释器使用子进程锁定 而不是线程。因此, 多处理模块允许 程序员充分利用多个 给定机器上的处理器。它运行 在Unix和Windows上。
GIL可能不是您的MemoryErrors的原因,但需要注意的是。