【发布时间】:2018-12-22 15:21:03
【问题描述】:
我对 Python 还很陌生,我遇到了真正的麻烦,因为我遇到了这个 Segmentation fault: 11 错误。
这是一个每次都会产生此错误的简单代码示例:
import grequests
class Url(object):
pass
a = Url()
a.url = 'http://www.heroku.com'
a.result = 0
b = Url()
b.url = 'http://www.google.com'
b.result = 0
c = Url()
c.url = 'http://www.wordpress.com'
c.result = 0
urls = [a, b, c]
rs = (grequests.get(u.url) for i, u in enumerate(urls))
grequests.map(rs)
绝对奇怪的是,如果我将 urls = ... 行替换为:
urls = [a, b]
然后我没有收到错误,脚本运行正常。
如果我把它改成只是
urls = [c]
然后我也没有错误,脚本运行正常。
如果我将 c.url = ... 更改为
c.url = "http://yahoo.com"
然后将 urls = ... 还原为
urls = [a, b, c]
然后我确实得到了分段错误:11 错误。
虽然我不确定如何解决,但似乎是内存问题。
我已经为此困扰了好几天,所以任何帮助,无论多么小,都非常感谢。
作为参考,我使用的是 macOS High Sierra (10.13.5) 并使用 Brew 安装了 Python 3.7.0。
【问题讨论】:
-
如果你只使用
[c]呢?也许 wordpress 网站正在做一些奇怪的事情并且内存不足。 -
感谢您的关注。我在原帖中添加了对 cmets 的回复。
-
在 Linux python3.7 上为我工作,pip 安装了 certifi-2018.4.16 chardet-3.0.4 gevent-1.3.4 greenlet-0.4.13 grequests-0.3.0 idna-2.7 requests-2.19 .1 urllib3-1.23。鉴于 3.7 非常新,我怀疑它可能是相关的。 Segfault 听起来更像是一个库/ABI 问题而不是内存,但我不是低级问题的专家。恐怕我只有这些了。
-
@snakecharmerb 这是有用的东西。明天我将弄清楚如何在我的 Mac 上安装 Python 3.6,看看是否有帮助。
标签: python