zoukankan      html  css  js  c++  java
  • 网络编程-进程-1、什么叫进程?

    知识点:(1)什么叫进程? 举个例子:电脑上qq,是一个exe二进制文件,存在磁盘里的,这叫程序,当我们双击打开qq时,操作系统调用代码以及系统分配的资源(资源包括摄像头,内存,显卡,声卡等等),这时进程就产生了,简单说进程启动的程序就是运行代码+资源,没有启动的时候就是一个二进制文件,不调用任何系统资源.

                   (2)特别要注意,不要与线程搞混淆,看下图:

            

    1、在程序中实现多进程:

    """导入进程模块"""
    import multiprocessing
    import time
    
    
    def test1():
        for i in range(5):
            print('test1')
            time.sleep(1)
    
    
    def test2():
        for i in range(5):
            print('tetst2')
            time.sleep(1)
    
    """创建多进程其实和多线程模式是一样的,只是使用到的模块和类不一样"""
    def main():
        t1 = multiprocessing.Process(target=test1)
        t2 = multiprocessing.Process(target=test2)
        t1.start()
        t2.start()
    
    
    if __name__ == '__main__':
        main()

    运行效果如下:
    test1
    tetst2
    test1
    tetst2
    test1
    tetst2
    test1
    tetst2
    test1
    tetst2

    2、那么上面多进程程序工作原理是怎样的呢?看下图就明白了:

           图片中的解释可能字太小,我把拷贝出来:当代码执行到箭头处,即创建子进程的时候,会将1的代码+资源拷贝一份放到一个新的内存中去运行这个子进程。2,3俩个子进程都有一份和1主进程中一模一样的代码+资源,这就是通过进程实现多任务原理。由此也可以看出多进程实现多任务有几个特点:1、是比较耗费系统资源的,因为每个子进程都有雨主进程相同的系统分配的资源2、程序稳定,因为每个进程都是独立运行的,主进程结束也不影响子进程的运行,因为都有一份一摸一样的代码

    3、补充的知识点:如何在创建进程对象的时候往进程函数里传参呢?看下面代码示例:

    def test1(a,b,c,d,*args,**kwargs):
       print(a,b,c,d)
       print(args)
       print(kwargs)
    
    
    def test2():
        pass
    
    
    def main():
        t1 = multiprocessing.Process(target=test1,args=(1,2,3,4,5,6),kwargs={'name':'张三','sex':''})
        t1.start()
    
    
    if __name__ == '__main__':
        main()

    运行效果:
    1 2 3 4
    (5, 6)
    {'sex': '男', 'name': '张三'}
  • 相关阅读:
    架构师考试回顾
    精通 WPF UI Virtualization
    疑难杂症之Web客户端无法登录
    CDTray, 打开,关闭光驱的系统托盘程序
    原来Queryable是这样实现的..
    jQuery.Excel, 使用Ctrl+方向键/Home/End在input表格中移动
    nGoodPersonCards++
    C#数据库数据导入导出系列之三 数据库导出到Excel下
    调用webservice时提示对操作的回复消息正文进行反序列化时出错&&Web service 超过了最大请求长度
    ASP.NET网络映射驱动器无权限访问的解决方案(转)
  • 原文地址:https://www.cnblogs.com/lz-tester/p/9366071.html
Copyright © 2011-2022 走看看