python学习 进程之156-159课

python全栈+人工智能入门到精通  视频

视频课程学习

第156集 进程、线程1

1、多核CPU实现多任务原理:真正的并行执行多任务只能在多核CPU上实现,但是由于任务数量远远多于CPU的核心数量,所以,操作系统会自动把很多任务轮流调度到每个核心上执行

并发:看上去一起执行,任务数多于CPU核心数

并行:真正一起执行,任务数小于等于CPU核心数

实现多任务的方式:

 a、多进程模式

 b、多线程模式

 c、协程模式

 d、多进程和多线程模式

2、对于操作系统而言,一个任务就是一个进程

进程是系统中程序执行和资源分配的基本单位。每个进程都有自己的数据段、代码段和堆栈段

第157集 进程、线程2

from time import sleep
from multiprocessing import Process
import os
'''
multiprocessing库
跨平台版本的多进程模式模块,提供了一个Process类来代表一个进程对象
'''
def run(arg):
    while True:
        print("hello world %s" % arg)
        print("%s   %s" % (os.getpid(), os.getppid()))
        sleep(2)
if __name__=="__main__":
    print("主进程启动")
    p1 = Process(target=run, args=(1,))
    p2 = Process(target=run, args=(2,))
    p1.start()
    p2.start()

第158集 进程、线程3

父子进程的先后顺序

from multiprocessing import Process
from time import sleep
def run(str):
    print("start")
    sleep(1)
    print("end")
if __name__ == '__main__':
    print("父进程启动")
    p = Process(target=run, args=("nice",))
    p.start()
    p.join()#父进程等待子进程结束
    print("父进程结束")

 

全局变量在多个进程中不能共享

from multiprocessing import Process
from time import sleep
num = 100
def run():
    print("子进程开始")
    global num#相当于num=100
    num += 1
    print("子进程结束")

if __name__=="__main__":
    print("父进程开始")
    p = Process(target=run)
    p.start()
    p.join()
    print("父进程结束  %d" % num) #输出100

第159集 进程、线程4

Pool

from multiprocessing import Process, Pool
def run(arg):
    print(arg)

if __name__=="__main__":
    p = Pool(2)
    for i in range(4):
        p.apply_async(run, args=(i,))
    p.close()#调用close后不能添加进程
    p.join()#调用join前要close

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值