zoukankan      html  css  js  c++  java
  • 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())
    查看执行结果-读写并发
     
  • 相关阅读:
    3.Appium运行时出现:Original error: Android devices must be of API level 17 or higher. Please change your device to Selendroid or upgrade Android on your device
    3.Python连接数据库PyMySQL
    2.Python输入pip命令出现Unknown or unsupported command 'install'问题解决
    2.Linux下安装Jenkins
    5.JMeter测试mysql数据库
    Android 4学习(7):用户界面
    Android 4学习(6):概述
    Android 4学习(5):概述
    Android 4学习(4):概述
    Android 4学习(3):概述
  • 原文地址:https://www.cnblogs.com/mrwhite2020/p/12879890.html
Copyright © 2011-2022 走看看