在 Python 中使用线程时要注意的注意事项?

kno*_*orv 4 python multithreading

我对 Python 中的线程很陌生,并且有几个初学者问题。

当使用 Pythonthreading模块启动超过五十个线程时,我开始得到MemoryError. 线程本身非常纤细,而且不太需要内存,因此似乎是线程的开销导致了内存问题。

  • 我可以做些什么来增加内存容量或以其他方式使 Python 允许更多线程?
  • 使用该threading模块可以在 Python 代码中运行的最大线程数是多少?你有没有采取任何技巧来达到这个数字?
  • 使用该threading模块时还有其他注意事项吗?

Ach*_*him 5

您的问题无法笼统地回答,因为线程的良好使用始终取决于要解决的具体问题。您也没有告诉我们您使用的是哪个 Python 版本,所以我假设您使用的是“默认”CPython 而不是 IronPython 或类似的东西。给你一些提示和想法来进一步思考你的问题:

  • 你为什么需要这么多踏板?无论如何,您的机器可能无法并行运行它们。
  • 看看 Stackless Python。不知道该项目的当前状态,但我认为它是为此类问题而设计的。
  • 全局解释器锁会阻止纯 Python 代码真正并行运行。但是 C 方法可以并行运行,因此在现实生活中有时很难猜测 Python 在并行化方面的表现。
  • Python 有很多不错的库。看看其中一个是否已经为您的设计问题提供了解决方案。如果您的问题与网络有关,请查看 Twisted 示例。