我有一个遍历Range(300)的循环,并使用'import threading'创建一个Thread。所以这会创建300个线程,这是正确的。
但是我遇到的问题是并非所有线程都启动,并且控制台中显示错误。如下
File "/usr/local/lib/python2.7/dist-packages/scapy/supersocket.py", line 29, in send
return self.outs.send(sx)
error: [Errno 105] No buffer space available
问:有没有办法可以增加缓冲区?
问:这是python限制还是进程限制?
答案 0 :(得分:1)
限制并发线程数量的一种简单方法是使用concurrent.futures.ThreadPoolExecutor
。创建一个最大线程数作为参数的实例:
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(100)
for i in range(300):
executor.submit(do_something, i)
答案 1 :(得分:-2)
concurrent.futures
正在为我工作。感谢@BartoszMarcinkowski。
我所做的如下。
import concurrent.futures
for i in my_list:
concurrent.futures.ThreadPoolExecutor(max_workers=1).submit(start_my_function)