在Python中使用线程时要注意的注意事项?
我对Python中的线程非常陌生,有几个初学者问题 当使用Python在Python中使用线程时要注意的注意事项?,python,multithreading,Python,Multithreading,我对Python中的线程非常陌生,有几个初学者问题 当使用Pythonthreading模块启动超过50个线程时,我开始得到MemoryError。线程本身非常纤细,并且不太需要内存,因此似乎是线程的开销导致了内存问题 我可以做些什么来增加内存容量,或者让Python允许更多的线程 使用threading模块在Python代码中可以运行的最大线程数是多少?你有没有耍什么花招来达到这个数字 使用线程处理模块时,是否有其他注意事项 您的问题不能用一般方式回答,因为线程的良好使用始终取决于要解决的具
threading
模块启动超过50个线程时,我开始得到MemoryError
。线程本身非常纤细,并且不太需要内存,因此似乎是线程的开销导致了内存问题
- 我可以做些什么来增加内存容量,或者让Python允许更多的线程
- 使用
模块在Python代码中可以运行的最大线程数是多少?你有没有耍什么花招来达到这个数字threading
- 使用
线程处理模块时,是否有其他注意事项
- 你为什么需要这么多踏板?无论如何,您的计算机可能无法并行运行它们
- 看看无堆栈Python。我不知道这个项目的现状,但我认为它是为解决这类问题而设计的
- 全局解释器锁阻止纯Python代码真正并行运行。但是C方法可以并行运行,所以在现实生活中,有时很难猜测Python在并行化方面的表现
- Python有许多很好的库。看看其中是否有一个已经为您的设计问题提供了解决方案。如果您的问题与网络有关,请查看Twisted
- 您的问题不能用一般方式回答,因为线程的良好使用始终取决于要解决的具体问题。您也没有告诉我们您使用的是哪个Python版本,所以我假设您使用的是“默认”CPython,而不是IronPython或类似的东西。给你一些提示和想法,让你进一步思考你的问题:
GIL可能不是导致内存错误的原因,但它是需要注意的。计算机有多少内存?通常,您需要尽可能少的线程。听起来你觉得你想要尽可能多的。THC4k:你从哪里得到这个印象的?所需的线程数量显然是问题域的一个函数。还可以看看gevent,它是为修复Eventlet的一些bug而构建的,具有更好的性能。