美文网首页
macOS,python多进程模块multiprocessing

macOS,python多进程模块multiprocessing

作者: DayBreakL | 来源:发表于2020-12-30 01:30 被阅读0次

    python多进程multiprocessing相关,此段代码在windows上能正常运行。

    from multiprocessing import Process,Queue
    
    # 多进程之间的通讯问题 multiprocessing模块中的Queue
    import requests
    
    count = 1
    
    def work1(q):
        while q.qsize() > 0:
            global count
            # 获取任务
            url = q.get()
            requests.get(url)
            print("work1正在执行任务---{}".format(count))
            count += 1
    
    
    def work2(q):
        while q.qsize() > 0:
            global count
            # 获取任务
            url = q.get()
            requests.get(url)
            print("work2正在执行任务---{}".format(count))
            count += 1
    
    
    if __name__ == '__main__':
        q = Queue()
        for i in range(10):
            q.put("http://httpbin.org/get")
        # 传了同一个对象进去,所以两个进程共享一个对象
        p1 = Process(target=work1,args=(q,))
        p2 = Process(target=work2,args=(q,))
    
        # 开始
        p1.start()
        p2.start()
    

    windows下运行结果:


    mac下运行结果:


    原因:多进程模块multiprocessing下的Queue.qsize()和Queue.empty()方法在Unix平台上无法正常使用,如macOS上。

    解决方法找到了,再补充。

    相关文章

      网友评论

          本文标题:macOS,python多进程模块multiprocessing

          本文链接:https://www.haomeiwen.com/subject/ecsinktx.html