gpt4 book ai didi

Rebol:内存不足的问题

转载 作者:行者123 更新时间:2023-12-02 07:50:10 26 4
gpt4 key购买 nike

我在下面运行了这个程序,其中包含数百个符号的 symbol_list,有时它说内存不足,而我确实重用了同一个变量,为什么?

base-url: http://www.google.com/finance/historical
download-directory: "askpoweruser/stock-download/google/files/"
column-header: "Time;Open;High;Low;Close;Volume"
#debug: true

symbol_list: parse/all {GOOG AAPL MSFT INDEXDJX:.DJI} " "
ans: ask {symbols by default "GOOG AAPL MSFT INDEXDJX:.DJI": }
if (ans <> "") [symbol_list: parse/all ans " "]
;do code-block/2

foreach symbol symbol_list [
url0: rejoin [base-url "?q=" symbol]
dir: make-dir/deep to-rebol-file download-directory

either none? filename: find symbol ":" [
filename: symbol
url: rejoin [url0 "&output=csv"]

either not error? try [content: read url][
out-string: copy rejoin [column-header newline]
quotes: parse/all content ",^/"
reversed-quotes: reverse quotes

foreach [v c l h o d] reversed-quotes [
either not (error? try [d: to-date d]) [
d: rejoin [d/year "-" d/month "-" d/day]
append out-string rejoin [d ";" o ";" h ";" l ";" c ";" v newline]
][
;print [d "is not a date"]
;input
]

]
filename: rejoin [filename "_" "1440"]
write to-rebol-file rejoin [dir filename ".csv"] out-string
print filename
][
print ["Error for symbol" symbol]
]
][
filename: replace/all replace/all filename ":" "" "." ""
out: copy []
for i 0 1 1 [
p: i
url: rejoin [url0 "&start=" (p * 200) "&num=" ((p + 1) * 200)]
content: read url
rule: [to "<table" thru "<table" to ">" thru ">"
to "<table" thru "<table" to ">" thru ">"
to "<table" thru "<table" to ">" thru ">"
copy quotes to </table> to end
]
parse content rule

parse quotes [
some [to "<td" thru "<td" to ">" thru ">" [copy x to "<" | copy x to end] (append out replace/all x "^/" "")]
to end
]
if #debug [
write/lines to-rebol-file rejoin [dir filename "_" p ".html"] quotes
]

]
if #debug [
write to-rebol-file rejoin [dir filename "_temp" ".txt"] mold out
]
out-string: copy rejoin [column-header newline]
out: reverse out

foreach [v c l h o d] out [
d: parse/all d " ,"
d: to-date rejoin [d/4 "-" d/1 "-" d/2]
d: rejoin [d/year "-" d/month "-" d/day]
append out-string replace/all rejoin [d ";" o ";" h ";" l ";" c ";" v newline] "," ""
]
filename: rejoin [filename "_" "1440"]
write to-rebol-file rejoin [dir filename ".csv"] out-string
print filename
]

]

要获取符号列表,您可以使用它(rebol 在字母 H 之前崩溃):

alphabet: [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
symbol-list: copy []
rule: [
to <table class="quotes">
some [ to {<A href="/stockquote} to ">" thru ">" copy symbol to "<" (append symbol-list symbol)]
to </table>
]
foreach letter alphabet [
content: read to-url rejoin ["http://www.eoddata.com/stocklist/NYSE/" letter ".htm"]
parse content rule
probe symbol-list
write/append %askpoweruser/stock-download/symbol-list-nyse.txt mold symbol-list
]

最佳答案

您可以在其中一个循环中放置一个 'STAT 函数,以尝试找出内存泄漏是否发生以及发生在何处。

内存不足错误通常发生在以下情况之一或类似情况中:

  • 在带有循环的函数开始时追加到未清除或复制的系列

  • 在某些(单个?)子元素在树外部引用并且整个数据 block 最终被捕获的情况下,完整的数据树不会重置为无(在每个叶子和分支)公羊无法自拔

  • 打印非常大的字符串或大对象的嵌套树时(例如,VID 面包含对完整样式表的引用,因此打印大型应用程序的窗口通常会失败。)。

  • 一些堆栈溢出(无限递归或循环)有时会被错误地报告为内存错误。

  • 单个项目的分配呈指数增长......就像图片一样!在两个轴上将每次传递乘以 10 时的分配...有效地增加了两个数量级,这通常在 n*10k 范围内的数字处失败。

  • GC 中最大的项目有时永远不会根据次优 R2 GC 解除分配(大图像可能有此症状)。

  • 递归解析规则正在创建数据,单个规则是无限的(它在 [ rule | none ] 等规则上发生得非常快。在这种情况下,没有有效地等同于永远。

关于Rebol:内存不足的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297653/

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