Python-多处理守护进程

Pyt*_*ast 2 python multiprocessing

我正在创建一个多进程,它创建一个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)
Run Code Online (Sandbox Code Playgroud)

Mic*_*ico 12

根据多进程守护程序文档,通过设置d.daemon=True脚本何时结束其作业将终止所有子进程.这种情况发生在它们开始写入之前,因此不会产生任何输出.


xxl*_*666 8

d.daemon = True表示子进程在父进程结束后自动终止,防止孤儿进程。join()只需添加d.join()after即可帮助d.start()父进程不会在子进程之前结束;相反,父进程将等待子进程结束。