• 进程,线程


    进程:对各种资源管理的集合。

    QQ 要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存的管理,网络接口的调用等。

      

    线程:是操作系统最小的调度单位,是一串指令的集合

    进程 要操作CPU,必须要先创建一个线程,

    进程与线程的区别:

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

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

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

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

    并发的多线程效果演示:

    import threading
    import time
    def run(n):
        print("task",n)
        time.sleep(5)
    t1 = threading.Thread(target=run,args=("t1",))
    t2 = threading.Thread(target=run,args=("t2",))
    t1.start()
    t2.start()
    View Code
    import threading
    import time
    
    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()
    View Code

    启50个线程,最后所有都启动后一共用多少时间:

    import threading
    import time
    def run(n):
        print("task",n)
        time.sleep(5)
    
    stat_time = time.time()
    t_objs = []    #存线程实例
    for i in range(50):
        t = threading.Thread(target=run,args=("t-%s" %i,))
        t.start()
        t_objs.append(t)   #为了不阻塞后面线程的启动,不在这里join,先放到一个列表里
    for t in t_objs:  #循环线程实例列表,等待所有线程执行完毕
        t.join()
    
    print("-------all threads has finished...")
    print("cost:",time.time()- stat_time)

     守护线程:

    import threading
    import time
    def run(n):
        print("task",n)
        time.sleep(5)
    
    stat_time = time.time()
    t_objs = []
    for i in range(50):
        t = threading.Thread(target=run,args=("t-%s" %i,))
        t.setDaemon(True)  #把当前线程设置为守护线程
        t.start()
        t_objs.append(t)
    # for t in t_objs:
    #     t.join()
    
    print("-------all threads has finished...")
    print("cost:",time.time()- stat_time)

    问题:无论你有多少核,同一时间只能执行一个线程

  • 相关阅读:
    欠拟合与过拟合概念和局部加权回归
    ActionEvent之TextField
    事件模型的介绍与Button的ActionListener
    布局管理器
    GUI初步和frame&panel
    生产者消费者问题
    线程同步
    [BZOJ 1407] Savage
    [BZOJ 1145] 图腾totem
    [BZOJ 1150] 数据备份
  • 原文地址:https://www.cnblogs.com/Cohen/p/8762852.html
Copyright © 2020-2023  润新知