首页 文章

Python并行刮取转储到JSON

提问于
浏览
0

寻找以下骨架代码的意见 . 我将使用一个大的输入列表进行一些Web抓取,并希望并行化该函数,同时将输出写入块中的json文件,以防进程失败我不会丢失工作 . 代码生成我想要的输出,函数f将是刮刀,print(结果)将输出到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")

1 回答

  • 0

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

    这样你根本不需要处理锁或可能编写并发问题或其他任何问题 .

相关问题