Python-多处理守护程序


问题内容

我正在创建一个多进程,该进程创建了一个csv文件。当我用d.daemon = False它运行代码时,它可以正常工作,即它在同一文件夹中创建一个文件。但是,当使用编译并运行时d.daemon = True,它不会(即不会创建文件)。怎么会这样

我的密码

我有一个URL的种子列表,需要从中抓取数据。

for url in config.SEED_LIST:
    # starting a new process for each category.
    d = multiprocessing.Process(target=workers.scrap, args=())
    d.daemon = True
    d.start()


def scrap():
    import time
    time.sleep(5)
    # The above part of code takes some time to scrap a webpage, applying
    # some logic, which takes some time to execute, hence I've added a time
    # sleep of 5 secs. But when run with daemon = True, the file is not
    # created. Else it works fine.

    data = [[1, 2, 3, 4], [2224, 34, 34, 34, 34]]
    with open('1.csv', "wb") as f:
        writer = csv.writer(f)
        writer.writerows(data)

问题答案:

根据多进程守护程序文档,通过设置d.daemon=True脚本结束时间,其工作将终止所有子进程。那是在他们开始写之前发生的,因此不会产生任何输出。