• 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  文件  设置了四个进程

  • 相关阅读:
    mysql 锁相关的视图(未整理)
    MYSQL的用户变量(@)和系统变量(@@)
    mysql杀死线程
    mysql 系统变量和session变量
    Oracle DB 移动数据
    MySQL数据库------常用函数
    练习-----查询
    练习建表
    课堂笔记总结
    数据库--------用代码来创建表
  • 原文地址:https://www.cnblogs.com/fromlantianwei/p/9971806.html
Copyright © 2020-2023  润新知