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

 

posted @ 2018-11-18 23:41  Mr喃先森  阅读(134)  评论(0编辑  收藏  举报