从线程中保留数据

时间:2011-03-01 19:02:33

标签: python multithreading

我正在尝试编写各种各样的“市场数据引擎”。

到目前为止,我有一个线程队列,每个线程都会将urllib用于google财务并重新显示页面中的股票详细信息。每个线程都会在几秒钟内轮询页面。

从这里开始,如何以另一个类可以轮询它的方式持久保存数据,而不会出现2个进程同时访问同一资源的问题?例如,如果我让我的线程写入一个不断更新的字典,我是否会从另一个函数读取相同的哈希?

1 个答案:

答案 0 :(得分:4)

使用标准dict并非线程安全(请参阅here)并且可能会导致问题,这是正确的。

处理此问题的一种非常好的方法是使用标准库中queue模块中的Queue类。它是线程安全的。让工作线程通过队列向主线程发送更新,并让主线程单独更新字典。

您也可以让线程更新数据库,但这可能会或可能不会因为您正在做的事情而过度。

您可能还想查看eventlet之类的内容。事实上,他们的首页上有web crawler example