zoukankan      html  css  js  c++  java
  • Python进程与线程

    Python进程与线程:

    什么是线程?什么是进程?

    线程是计算机操作系统能够运算调度的最小单位。它被包含在进程之中。是进程中实际运作单位。一条线程是指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同任务。

    进程要操作CPU,必须先要创建一个线程,进程是资源的集合,线程是进程的内涵,是一串指令的集合。

    所有在同一个进程里的线程是共享同一块内存空间。

    线程与进程的区别:

    1. 线程共享内存空间,进程的内存是独立的

    2.两个子进程实现互独立的,不可以相互访问。

    3.同一个进程的线程之间可以直接交流,两个进程想要通信,必须通过一个中间代理来实现。

    4.创建新线程很简单,创建新进程需要对其父进程进行一次克隆。

    5.一个线程可以控制和操作同一进程里的其他线程,但是进程只能操作子进程。

    6.对于主线程的修改,有可能影响到其他线程的运行。但是对一个父进程的修改,不会影响子进程的运行。

    实例一:

    import  threading
    import time
    def run(n):
    print("task",n)
    time.sleep(2)


    t1=threading.Thread(target=run,args=("t1",))
    t2=threading.Thread(target=run,args=("t2",))
    t1.start()
    t2.start()
    实例二:
    import  threading
    class MyThread(threading.Thread):
    def __init__(self,n):
    super(MyThread,self).__init__()
    self.n=n
    def run(self):
    print("runnint task:",self.n)



    t1=MyThread("t1")
    t2=MyThread("t2")
    t1.start()
    t2.start()

    实例三:
    import  threading,time
    class MyThread(threading.Thread):
    def __init__(self,n):
    super(MyThread,self).__init__()
    self.n=n
    def run(self):
    print("runnint task:",self.n)
    #time.sleep(2)
    start_time=time.time()
    t_obj=[]
    for i in range(50):
    t=MyThread("t-%s"%i)
    t.start()
    #t.join()
    t_obj.append(t)
    for t in t_obj:#循环实例列表,等待所有线程结束
    t.join()


    print("cost:",time.time()-start_time)
    守护进程,守护主线程退出,子线程无论完没完成都会退出:
    import  threading,time
    class MyThread(threading.Thread):
    def __init__(self,n):
    super(MyThread,self).__init__()
    self.n=n
    def run(self):
    print("runnint task:",self.n)
    #time.sleep(2)
    start_time=time.time()
    t_obj=[]
    for i in range(50):
    t=MyThread("t-%s"%i)
    t.setDaemon(True)#把当前线程设置为守护线程,一定在start之前
    t.start()
    #t.join()
    t_obj.append(t)
    #for t in t_obj:
    # t.join()

    print("cost:",time.time()-start_time)

  • 相关阅读:
    git 好文引流
    无法访问Swagger 或 druid面板无法访问 #报异常
    MachineLearning入门-7(数据理解)
    MachineLearning入门-6(数据导入)
    MachineLearning入门-5(Python和Scipy简介)
    百度PaddlePaddle入门-10(数据处理)
    百度PaddlePaddle入门-9(建模)
    百度PaddlePaddle入门-8(模型探讨)
    MachineLearning入门-4(理解数据集)
    百度PaddlePaddle入门-7 (Numpy的应用)
  • 原文地址:https://www.cnblogs.com/gycone/p/10142732.html
Copyright © 2011-2022 走看看