美文网首页程序员
进程和线程(2)

进程和线程(2)

作者: 梦捷者 | 来源:发表于2018-12-17 15:03 被阅读4次

(一)进程和线程的标识

        1、进程标识符    (1)进程pid:操作系统为每一个管理的进程分配一个独一无二的序号,这个序号就是pid。    (2)进程名:进程名仅仅在打印输出的时候用来显示,完全没有其他的意义;如果不给进程起名字的话,系统就会自动给进程命名为process-1,process-2.......process-n。     (3)os.getpid()——获取当前进程的pid;os.getppid——获取父进程的pid    2、线程标识符     (1)主线程:在任何进程中,默认会启动一个线程,这个线程就是主线程。    (2)线程id和线程名    a、python的threading模块中的current_thread()函数,它返回的是当前线程的实例。    b、main_thread()函数返回的是当前线程的主线程。    c、ident用来获取线程实例的id。           

(二)多进程和多线程的同步

        1、守护模式    (1)daeman默认为False,当为True的时候代表守护模式(运行完毕并非是终止运行)    ( 2 ) 对于进程来说,运行完毕指的是父进程的代码运行完毕。    (3)对于主线程来说,运行完毕指主线程所在的进程里的所有非守护线程全部执行完毕,主线程才算执行完毕。    2、等待模式    join()方法,可以使父进程(主线程)等待子进程(子线程)执行完毕后,再往下进行执行。

        代码实例:

        import time

        import os

        from multiprocessing import Process

        def child_ process_task(name):

                time.sleep(5)

                ptint('我是子进程%s,id是%s,我的父进程id是%s'%(name,os.getpid(),os.getppid()))

        if __name__=='__main__':

                print('我是父进程,id是:%s'%(os.getpid()))

                c_p=Process(target=child_ process_task,args=('test',))  

                c_p.daemon=True

                c_p.start()

                c_p.join()

                print('父进程结束') 

(三)以面向对象的形式使用进程和线程

        步骤:1、继承process    2、实现run方法

        代码实例:以面向对象的方式写一个多进程的服务端(线程也是一样的方式)

        from  multiprocessing import Process

        import socket 

        class myProcess(Process):

                def __init__(self,sock):

                    Process.__init__(self)

                    self.sock=sock

                def run(self):

                        while   True:

                            recv_data=self.sock.recv(1024)

                            if recv_data:

                                        print(recv_data.decode())

                                        self.sock.send(recv_data)

                            else:

                                        break

                            self.sock.close()

        if  __name__=='__main__':

                sever=socket.socket()

                server.bind((' ',端口号))

                sever.listen(1000)

                while True:

                            conn,adrr=server.accept()

                            p=myProcess(conn)

                            

                         

相关文章

  • java面试3

    1. 进程与线程的区别? 进程和线程的关系: 进程与线程的区别: 2.struts2和springMVC的区别? ...

  • 剑指offer:告诉你哪些不为人知的Java 多线程与并发整理

    一、进程和线程的区别 1. 进程和线程的由来: 2. 进程和线程的区别 进程是资源分配的最小单位,线程是CPU调度...

  • linux c/c++多线程看了肯定懂

    1 线程编译 gcc -o pthread -lpthread pthread.c 2 线程和进程的区别 进程线程...

  • Android 进程和线程

    本文copy自google文档:进程和线程,不用翻墙看啦~ 本文内容:1、进程进程生命周期2、线程工作线程3、线程...

  • python多线程、锁、event事件机制的简单使用

    线程和进程 1、线程共享创建它的进程的地址空间,进程有自己的地址空间 2、线程可以访问进程所有的数据,线程可以相互...

  • 浏览器的进程与线程

    本文目录: 1.进程和线程的概念 2.应用程序如何调度进程和线程 3.多进程和多线程 4.Chrome 的多进程架...

  • 线程和进程概念

    线程和进程 进程 线程 线程和进程的区别

  • 进程和线程

    三、 进程和线程的关系 1.线程是进程的执行单元,进程的所有任务都在线程中执行 2.线程是 CPU 分配资源和调度...

  • 19.Java中的线程

    1.进程和线程 2.多线程程序运行模式 3.定义线程的方法 多进程和多线程 多进程:在操作系统中能(同时)运行多个...

  • iOS 中的线程和进程

    线程和进程的区别 线程: 1,线程是进程的基本单位,一个进程的所有任务都在线程中执行。 2,进程要想执行任务,必须...

网友评论

    本文标题:进程和线程(2)

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