• python之单线程、多线程、多进程


    一、基本概念
    进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。
    线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
    简单总结:
    进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。
    线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。
     
    二、 单线程
    程序执行时,所走的程序路劲按照联连续顺序排下去,前面的处理完后,后面的才会执行
    举个栗子
    #单线程
     1 from time import sleep,ctime
     2 def talk():
     3 print("stark talk %r" %ctime())
     4 sleep(2)
     5 def write():
     6 print("stark write %r" %ctime())
     7 sleep(3)
     8 talk()
     9 write()
    10 print("all and! at %r" %ctime())
    查看结果-顺序执行

    三、多线程

     1 from time import sleep,ctime
     2 import threading
     3 
     4 def talk(content,loop):
     5 for i in range(loop):
     6 print("stark talk %s %s" %(content,ctime()))
     7 sleep(3)
     8 
     9 def write(content,loop):
    10 for i in range(loop):
    11 print("stark write %s %s" %(content,ctime()))
    12 sleep(5)
    13 #定义和加载说和写的线程
    14 threads=[]
    15 t1=threading.Thread(target=talk,args=('hello world',2))
    16 threads.append(t1)
    17 t2=threading.Thread(target=write,args=('life is short you need python',2))
    18 threads.append(t2)
    19 #执行多线程
    20 for t in threads:
    21 t.start()
    22 for t in threads:
    23 #线程守护
    24 t.join()
    25 print("all threads end! at %r" %ctime())
    查看执行结果-读写并发
     
     
    四、多进程
     1 from time import sleep,ctime
     2 import multiprocessing
     3 
     4 def talk(content,loop):
     5 for i in range(loop):
     6 print("stark talk %s %s" %(content,ctime()))
     7 sleep(2)
     8  
     9 def write(content,loop):
    10 for i in range(loop):
    11 print("stark write %s %s" %(content,ctime()))
    12 sleep(3)
    13 #定义和加载说和写的进程
    14 process=[]
    15 p1=multiprocessing.Process(target=talk,args=('hello world',2))
    16 process.append(p1)
    17 p2=multiprocessing.Process(target=write,args=('life is short you need python',2))
    18 process.append(p2)
    19 #调用进程
    20 if __name__=='__main__':
    21 for t in process:
    22 t.start()
    23 for t in process:
    24 #进程守护
    25 t.join()
    26 print("all process end! at %r" %ctime())
    查看执行结果-读写并发
     
  • 相关阅读:
    软件工程评分表
    评论
    团队成员介绍
    第九天冲刺
    第八天冲刺
    第七天冲刺
    第六天冲刺
    第五天冲刺
    第四天冲刺
    第三天冲刺
  • 原文地址:https://www.cnblogs.com/mrwhite2020/p/12879890.html
Copyright © 2020-2023  润新知