zoukankan      html  css  js  c++  java
  • 18 11 18 网络通信 ----多任务----进程

    多任务------进程就是把相同的资源复制一份 来进行子进程    总而言之  

      缺点:   就是最占用内存和cpu  的一种多任务处理方式  优点:     是可以在代码要改(主线程和数据的时候用 专业名词叫做  写时拷贝

    import time
    import multiprocessing
    
    def text1 ():
        while True:
            print("-----1----")
            time.sleep(1)
    
    def text2 ():
        while True:
            print("-----2----")
            time.sleep(1)
    def main():
        t1 = multiprocessing.Process(target = text1)  # 在这里调用multiprocessing的方法 和之前threading的调用方法一样
        t2 = multiprocessing.Process(target= text2)
        t1.start()
        t2.start()
    
    
    
    
    
    if __name__ == '__main__':
        main()

     比如说向百度云盘  不能让你直接把所有文件下载 而是开通会员先给下载四个  则就要引入队列(和栈相反)

    import multiprocessing
    
    def download_from_web (q):  # 传入实参q 只能用这么多的资源
        # 模拟从网上下载数据
        data = [11,22,33,44]
        # 队列中写入数据
        for temp in data:
            q.put(temp)
    
        print("下载器已经下载完了数据,并且存入到队列中...")
    
    def analise_data(q):  # 传入实参q  只能用 q 这么多的资源
        # 数据处理
        waitting_analysis_data = list()
        # 从队列中获取数据
        while True:
            data = q.get()
            waitting_analysis_data.append(data)
            print(waitting_analysis_data)
    
            if q.empty():
                break
    
    
    
    
    def main():
        # 1创建一个队列
        q =multiprocessing.Queue(4)  # 由于进程中占的资源比较多 所以只分配  4 个队列
    
        # 2创建多个进程,把队列当作实参传送到里面
        p1 = multiprocessing.Process(target=download_from_web,args=(q,))
        p2 = multiprocessing.Process(target = analise_data,args = (q,))
    
        p1.start()
        p2.start()
    
    
    
    if __name__ == '__main__':
        main()

    引入了 multiprocessing  中的 queue  文件  设置了四个进程

  • 相关阅读:
    C++基础学习6:内联函数
    lvm
    yum源
    mysql性能优化
    PXE
    dns配置
    进程命令
    ssh免密登陆和加密解密
    RAID阵列
    快速部署postfix邮件服务器
  • 原文地址:https://www.cnblogs.com/fromlantianwei/p/9971806.html
Copyright © 2011-2022 走看看