用python同时下载文件并插入mysql数据库
我使用urllib2下载相对较大的文件(每个10mb),然后将其作为json文件加载,并将数据插入mysql数据库,然后在无限循环中重复该过程。下载大约需要一分钟,然后将所有内容加载到mysql中。有没有办法创建一个线程,在主线程使用python插入mysql时进行下载 我的伪代码:用python同时下载文件并插入mysql数据库,python,mysql,multithreading,multiprocessing,urllib2,Python,Mysql,Multithreading,Multiprocessing,Urllib2,我使用urllib2下载相对较大的文件(每个10mb),然后将其作为json文件加载,并将数据插入mysql数据库,然后在无限循环中重复该过程。下载大约需要一分钟,然后将所有内容加载到mysql中。有没有办法创建一个线程,在主线程使用python插入mysql时进行下载 我的伪代码: 非常感谢你 您可以使用线程和队列。文件IO线程将读取并处理该文件,然后将结果插入队列,数据库IO线程将在队列中发现结果并执行工作。我将在这里指导您,而不是编写一个示例: 或者,您可以使用pythonselect模
非常感谢你 您可以使用线程和队列。文件IO线程将读取并处理该文件,然后将结果插入队列,数据库IO线程将在队列中发现结果并执行工作。我将在这里指导您,而不是编写一个示例:
或者,您可以使用python
select
模块来管理多个文件读取操作,并在它们完成时逐个处理它们:Twisted。Twisted永远是答案。Twisted(如Ignacio所说)或Tornado都是异步的。也许多处理器(或进程池)更安全。在多个处理器有用的情况下,一个好的点是:CPU限制的操作。在IO受限的情况下,额外的处理器不是问题所在——让IO不阻塞才是问题所在。太棒了,这正是我想要的。因此,我只需要用我自己的代码修改给定示例中的“run”函数?对——python线程的start
方法转交给run
方法,在该方法中定义线程将执行的工作。因此,您可能有一个线程类,其run
方法下载并处理文件,另一个线程类的run
方法执行数据库插入。正如示例所示,设置线程池很容易,因此可以同时下载/插入多个文件。
while 1:
download file with urllib2
decode as json file
extract data I want
do some computations on data
insert data into mysql