gpt4 book ai didi

Python 线程堆栈大小和段错误

转载 作者:行者123 更新时间:2023-11-28 20:00:19 28 4
gpt4 key购买 nike

最多生成 500 个线程的网络爬虫脚本,每个线程基本上请求远程服务器提供的某些数据,每个服务器的回复在内容和大小上都与其他服务器不同。

我将线程的 stack_size 设置为 756K

threading.stack_size(756*1024)

这使我能够拥有所需的足够数量的线程并完成大部分作业和请求。但是由于某些服务器的响应比其他服务器大,并且当线程获得那种响应时,脚本会因 SIGSEGV 而终止。

stack_sizes 超过 756K 使得无法同时拥有所需数量的线程。

关于如何继续使用给定的 stack_size 而不会崩溃的任何建议?以及如何获取任何给定线程的当前使用的 stack_size?

最佳答案

为什么 你要产生 500 个线程?这似乎是个糟糕的主意!

完全删除线程,使用事件循环进行抓取。您的程序将更快、更简单且更易于维护。

大量线程等待网络不会让您的程序等待得更快。相反,将所有打开的套接字收集到一个列表中并运行一个循环,检查其中是否有可用数据。

我推荐使用 Twisted - 它是一个事件驱动的网络引擎。它非常灵活、安全、可扩展且非常稳定(无段错误)。

你也可以看看 Scrapy - 这是一个用 Python/Twisted 编写的网络爬虫和屏幕抓取框架。它仍在大力开发中,但也许您可以采纳一些想法。

关于Python 线程堆栈大小和段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/394895/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com