栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

  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之间。从肉眼看是同时执行的,其实不是,只不过切换的速度偏快而已。

2 多进程实现

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

        进程的特点:

        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'))

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

时光不负,未来可期

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号