• 进程和创建线程的两种方法(threading.Thread)


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

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

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

    1所以在同一进程里的线程是共享同一块内存空间的

    2两个子进程的数据不是共享的,且不能相互访问,线程数据是共享的

    3.同一进程的线程之间可以交流,数据共享, 信息传递,两个进程想通信, 必须通过一个中间代理 

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

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

    6.对主线程的修改可能会影响到其他的线程,但是进程只会操作子进程

    创建进程的第一种方法 :函数调用 

     1 import threading, time
     2 
     3 def run(n, run_time):
     4     print('task run %s'%n)
     5     time.sleep(run_time)
     6     print('the run %s'%n)
     7 
     8 
     9 
    10 
    11 
    12 m = threading.Thread(target=run, args=(5, 1))  # child thread
    13 
    14 m1 =threading.Thread(target=run, args=(2, 3))
    15 
    16 m.start()
    17 m1.start()
    18 
    19 m1.join()  #执行完子线程m1
    20 m.join()   #执行完子线程m2
    21 
    22 
    23 print('alex')

    创建进程的第二种方法:继承 threading.Thread 

    import threading, time
    
    class MyThread(threading.Thread):
        def __init__(self, n, run_time):
            threading.Thread. __init__(self)
            self.n = n
            self.time = run_time
    
    
        def run(self):
            print('task run%s'%self.n)
            time.sleep(self.time)
            print('the run%s'%self.n)
    
    m = MyThread(1, 5)
    m1 = MyThread(3, 2)
    
    m.start()
    m1.start()
    
    m.join(timeout=2) #执行两秒后就往下执行
    m1.join(1)  #执行一秒后就往下执行
    
    
    print('task done')
  • 相关阅读:
    Mysql5.7 Linux安装教程
    搭建appium的android环境
    SonarQube的安装、配置与使用(windows)
    动态规划(一)——0-1背包问题
    回溯法(四)——图的m着色问题
    回溯法(三)——正则表达式匹配问题
    C++中各种基本数据类型大小一览
    回溯法(二)——0-1背包问题
    回溯法(一)——八皇后问题
    分治算法——正规归并排序中顺便计算出数组中的逆序对数
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/9132330.html
Copyright © 2020-2023  润新知