Python:确定需要创建的线程数
IOError: [错误号 socket 错误] [错误号 10055] 由于系统缺少足够的缓冲区空间或队列已满,无法对套接字执行操作。
我该如何确定应该创建多少个线程实例,以防止我的程序遇到上述错误呢?
def do_work(sym):
if quote.get_price(i) != '0.00':
print '%s: %s' % (i, squote.get_price(i))
for i in perm:
t = Thread(target=do_work, args=(i,))
t.start()
注意:
1. len(perm) 大约是 27000
2. quote.get_price() 的功能类似于:
return urllib.urlopen(url).read().strip().strip('"')
2 个回答
2
你遇到的问题可能是因为有27,000个线程在运行,这样会造成很大的负担。建议你可以先创建一个股票的队列,列出你想要获取报价的股票,然后用5到10个线程的工作池来获取这些股票的价格。
2
使用线程池,而不是创建27,000个线程。
import multiprocessing.pool
def do_work(sym):
if quote.get_price(sym) != '0.00':
print '%s: %s' % (sym, squote.get_price(sym))
if __name__ == '__main__':
number_of_threads = 4
pool = multiprocessing.pool.ThreadPool(number_of_threads)
pool.map(do_work, perm)