Python 创建多进程,运行程序确没有并行 执行,没搞明白,有大佬指点一二吗?

2020-12-21 17:44:22 +08:00
 dawnzhu
if __name__ == "__main__":
    initial_time = time.time()  # 程序开始时间
    url_pool = initialize_database()  # 初始化数据库
    search_key = [
                "BALENCIAGA 包",
                "BALLY 包",
                "BOTTEGA VENETA 包",
                "BURBERRY 包",
                "BVLGARI 包",
                "CELINE 包",
                "CHANEL 包"
                ]
    jds = Jd_Spider(url_pool, 'jd_info')  # 实例化类
    p_list = []
    p_jds = multiprocessing.Process(jds.run(), args=())
    p_list.append(p_jds)
    for key in search_key:
        p = multiprocessing.Process(search_keyword.search_sku, args=(key,))
        p_list.append(p)
    for P_step in p_list:
        P_step.start()
    for p_step in p_list:
        p_step.join()
    print("最终用时:", time.time() - initial_time)  # 打印程序最终用时

我创建多个进程,运行程序,总是会执行 jds_run() 这个函数,search_key_word.search_sku 没有得到并发执行,有大佬清楚其中缘由吗

1593 次点击
所在节点    Python
4 条回复
itskingname
2020-12-21 18:11:46 +08:00
p_jds = multiprocessing.Process(jds.run(), args=())
第一个参数应该是 jds.run ,不要加括号。
1462326016
2020-12-21 18:37:36 +08:00
一楼正解,另外在传递函数对象时要时刻注意,不要加括号,加了括号就是执行这个函数,而不是传递函数对象。
dawnzhu
2020-12-22 11:32:56 +08:00
@itskingname 是的,没看到这个错误,谢谢哈
dawnzhu
2020-12-22 11:33:26 +08:00
@1462326016 对对,没注意到这里,谢谢大佬指点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX