高级编程:认识进程与线程

  1. 多任务深入了解

  2. 多进程实现

  3. 多线程实现

  4. 并发服务器

目录

1 CPU时间片:

2 多进程实现

2.1 进程的导入模块:muitiprocessing。

2.2 进程携带参数

3 线程

3.1 线程定义

3.2 线程的作用

3.3 线程多线程模块:threading

4 时间模块:



多任务深入了解

1 CPU时间片:

        指例如利用电脑边聊天,边玩小游戏,这个操作其实叫做高并发。如何实现的?在一定时间内,通过CPU时间片,不停地进行切换,执行多个任务,CPU每次切换的频率是5 nm ~ 800 nm之间。从肉眼看是同时执行的,其实不是,只不过切换的速度偏快而已。

多进程实现

        进程定义:正在运行的程序

        进程的特点:

        1.每个进程拥有自己的独立的地址空间,内存,数据在栈,以及其他用于跟踪执行的辅助数据

        2.各个进程之间相互独立,互不影响

        进程的作用:提高代码的运行效率

2.1 进程的导入模块:muitiprocessing。

        注意在使用muitiprocessing 之前,要使用''__main__方法。

import time
import multiprocessing

def gauzi():
    for i in range(5):
        print("嗑瓜子中.....")
        time.sleep(0.3)


def drink():
    for i in range(5):
        print("喝水中.....")
        time.sleep(0.3)

# Eguazi()
# Drink()
if __name__ == '__main__':
    #创建嗑瓜子子进程
    guazi_process = multiprocessing.Process(target=gauzi)  # Eguazi_process 这个进程要执行的Eguazi方法。
    Drink_process = multiprocessing.Process(target=drink)  # Drink_process 这个进程要执行的Drink方法。

    #启动进程任务

    guazi_process.start()
    Drink_process.start()

2.2 进程携带参数

以元组方式传参:

携带一个参数时:用arges 里面的数据 后面要加一个 ‘

携带多参数时:用arges 传入对应的个数。

import time
import multiprocessing

def func(x):
    print(x)

if __name__ == '__main__':
    #创建嗑瓜子子进程
    guazi_process = multiprocessing.Process(target=func,args=(1,))
    #启动进程任务

    guazi_process.start()
import time
import multiprocessing

def func(x,y):
    print(x+y)

if __name__ == '__main__':
    #创建嗑瓜子子进程
    guazi_process = multiprocessing.Process(target=func,args=(1,3))
    #启动进程任务

    guazi_process.start()

以字典的方式传参:

import time
import multiprocessing

def func(x):
    print(x)

if __name__ == '__main__':
    #创建嗑瓜子子进程
    # 以元祖方式传参,元组里面的元素顺序要和函数里面的参数顺序保持一致args=(2,)
    # 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求 kwargs={"x":18}
    guazi_process = multiprocessing.Process(target=func,kwargs={'x': 3})
    #启动进程任务

    guazi_process.start()

也可以元祖和字典同时使用:

import time
import multiprocessing

def func(x,y):
    print(x,y)

if __name__ == '__main__':
    #创建嗑瓜子子进程
    # 以元祖方式传参,元组里面的元素顺序要和函数里面的参数顺序保持一致args=(2,)
    # 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求 kwargs={"x":18}
    guazi_process = multiprocessing.Process(target=func,args=(1,),kwargs={'y':2})
    #启动进程任务

    guazi_process.start()

注意:以元祖的方式传参,元祖里面的元素顺序要跟函数里面的顺序一致

           以字典的方式传参,字典里面的key 要和函数里面的函数名保持一致,没有顺序。

多进程:一个进程里面有多个子进程。 

3 线程

3.1 线程定义

           线程是运行在进程里面的,进程如果说是电子厂,则线程就是厂里面的工人。

           进程包括多个线程,进程结束了,线程也自动结束。

3.2 线程的作用

           节省空间和内存地址

3.3 线程多线程模块:threading

也可以用元祖和字典分别单个传参,也可以同时传参。

import time
# import multiprocessing
import threading

def func(x,y):
    print(x,y)

if __name__ == '__main__':
    #创建嗑瓜子子进程
    # 以元祖方式传参,元组里面的元素顺序要和函数里面的参数顺序保持一致args=(2,)
    # 以字典方式传参,字典里面的key要和函数里面的参数名保持一致,没有顺序要求 kwargs={"x":18}
    guazi_process = threading.Thread(target=func,args=(1,),kwargs={'y':2})
    #启动进程任务

    guazi_process.start()

4 时间模块:

import time
print(time.strftime('%Y-%m-%d %H:%M:%S'))

import time

print(time.strftime('%Y-%m-%d %H:%M:%S'))

感谢大家支持,大家一起继续加油!

时光不负,未来可期

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨某人...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值