Python并行抓取+转储到JSON



寻求对以下骨架代码的意见。我将使用一个大的输入列表进行一些web抓取,并希望将函数并行化,同时将输出分块写入json文件,以防过程失败——我不会失去工作。代码产生了我想要的输出,函数f将是scraper,print(results(将是json文件的输出。想知道是否有更有效的方法:

import multiprocessing as mp
import os
def f(x):
print('Doing: ' + str(x) + ' with process id:'+ str(os.getpid()) + 'n')
return(x*x)
def main():
id_list = range(1000)
chunksize = 10
lock = mp.Lock()
for i in range(0, len(id_list), chunksize):
chunk = id_list[i : i + chunksize]
p = mp.Pool(12)
results = p.map(f, chunk)
for j in range(len(results)):
lock.acquire()
try:
print('The results is: ' + str(results[j]) + 'n')
finally:
lock.release()
p.close()    
if __name__ == "__main__":
main()
print("Done")

每个进程都可以将自己的输出写入一个单独的文件,您可以稍后处理它们的组合。

这样一来,您就不必处理锁或可能的写并发问题,也不必处理代码中的任何问题。

相关内容

  • 没有找到相关文章

最新更新