我创建了一个访问美国和欧盟服务器的网络蜘蛛.美国和欧盟的服务器是相同的数据结构,但内部有不同的数据,我想整理它们.为了对服务器好,每个请求之间都有一个等待时间.由于程序完全相同,为了加快处理速度,我已经对程序进行了线程化,以便它可以同时访问EU和US服务器.
这种抓取需要几周而不是几天.会有例外情况,虽然我已经尝试处理程序中的所有内容,但可能会出现奇怪的情况.为了真正防御这个,我想抓住一个失败的线程,记录错误并重新启动它.最糟糕的情况是我失去了成千上万的页面,这比线程失败并且失去50%的速度更好.但是,从我读过的内容来看,Python线程无声无息.有没有人有任何想法?
class AccessServer(threading.Thread):
def __init__(self, site):
threading.Thread.__init__(self)
self.site = site
self.qm = QueueManager.QueueManager(site)
def run(self):
# Do stuff here
def main():
us_thread = AccessServer(u"us")
us_thread.start()
eu_thread = AccessServer(u"eu")
eu_thread.start()
Run Code Online (Sandbox Code Playgroud) 我希望能够在给定的版本中找到Git存储库中的文件数,最好不必先查看修订版.
我以为git ls-files可能会把我带到某个地方,但是我无法看到任何通过Git修改它的方法.
提前致谢!
我正在计算一个单词出现在麦克白的次数:
use std::io::{BufRead, BufReader};
use std::fs::File;
use std::collections::HashMap;
fn main() {
let f = File::open("macbeth.txt").unwrap();
let reader = BufReader::new(f);
let mut counts = HashMap::new();
for l in reader.lines() {
for w in l.unwrap().split_whitespace() {
let count = counts.entry(w).or_insert(0);
*count += 1;
}
}
println!("{:?}", counts);
}
Run Code Online (Sandbox Code Playgroud)
生锈barfs,说:
error[E0597]: borrowed value does not live long enough
--> src/main.rs:14:9
|
11 | for w in l.unwrap().split_whitespace() {
| ---------- temporary value created here
...
14 | }
| ^ temporary value dropped …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用反斜杠代替正则表达式,但Python似乎插入了一个双反斜杠,我无法让它停止!
>>> re.sub('a', '\\ b', 'a')
'\\ b'
Run Code Online (Sandbox Code Playgroud)
双反斜杠应该是反斜杠(escape + backslash =反斜杠),但它最终是字面意思.
如果我删除双斜杠,它根本不打印一个:
>>> re.sub('a', '\ b', 'b')
'b'
Run Code Online (Sandbox Code Playgroud)
如何通过一个反斜杠将Python变为sub ?