Python循环导致“错误:[Errno 105]没有可用的缓冲区空间”

时间:2015-07-31 12:37:53

标签: python multithreading

我有一个遍历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限制还是进程限制?

2 个答案:

答案 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)