【问题标题】:Python: can't start new threadPython:无法启动新线程
【发布时间】:2021-01-13 04:47:44
【问题描述】:

我遇到了 python 线程的问题,当我开始测试线程的最大限制时,我最终得到了最大 900 个线程,但是当我在另一台电脑上运行此代码时,最多可以达到 500,000强>线程

可能是注册表文件有问题!?

平台:Windows

from threading import Thread, activeCount
from time import sleep

def x():
    sleep(1000)
    print('END')

for i in range(5000):
    Thread(target=x).start()
    print (activeCount())

输出是:

890
891
892
893
894
895
896
897
898
Traceback (most recent call last):
  File "C:/Users/TAS02/PycharmProjects/All_Projects/tst.py", line 38, in <module>
    Thread(target=x).start()
  File "C:\Users\TAS02\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 852, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread

【问题讨论】:

  • 您的操作系统中似乎已达到线程限制。
  • 感谢您的快速回复,几个月前我可以运行大约 500,000 个线程,但今天我测试它时遇到了这个错误
  • 没有理由运行 100 个线程,它不会加速你的代码。

标签: python windows multithreading pycharm


【解决方案1】:

事实证明,Windows 64 位与 python 32 位存在一些问题,这就是我的问题

【讨论】:

    【解决方案2】:

    如上所述,我认为这与操作系统限制有关。在不了解细节的情况下很难与另一台机器进行比较,但诸如它是 32/64 位、RAM 大小、操作系统限制等都会产生影响。我怀疑 python 使用了大量内存,所以 Windows 限制了它。下面的链接可以帮助您了解线程的限制。 https://docs.microsoft.com/en-us/sysinternals/downloads/testlimit

    【讨论】:

    • 我用 testlimit 测试了我的计算机,最多可以有 500,000 个线程,但是当我运行我的 python 应用程序时,我无法获得超过 1000 个线程
    猜你喜欢
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多