永远不要在函数定义中使用可变对象作为默认参数值。在你的情况下:def Discover(myList=[])
使用Queue.Queue
而不是list
提供myList
在线程运行时是否需要更新“任务”列表。或...multiprocessing.pool.ThreadPool
用于限制同时运行的线程数。
使用Queue.Queue
而不是list
提供results
变量。list
实现不是线程安全的,所以你可能会遇到很多问题。
您可以在其他 SO 问题中找到一些示例,即此处。
PSThreadPool
在 Python 2.7+ 中可用
$ python
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from multiprocessing.pool import ThreadPool
>>> ThreadPool
<class 'multiprocessing.pool.ThreadPool'>