当前位置: 代码迷 >> 综合 >> Python创建进程、线程的两种方式
  详细解决方案

Python创建进程、线程的两种方式

热度:34   发布时间:2024-02-09 01:39:53.0

代码创建进程和线程的两种方式

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

"""
定心丸:Python创建进程和线程的方式基本都是一致的,包括其中的调用方法等,学会一个另一个自然也就会了。
"""

1.创建进程的两种方式

  • 方式一

    import os
    import time
    from multiprocessing import Process# 实例化一个multiprocessing.Process的对象,并传入一个初始化函数对象
    def task(name):print(f'进程 {name} 的PID为{os.getpid()},父进程ID为 {os.getppid()}')time.sleep(2)print(f'进程 {name} 的PID为{os.getpid()} 运行结束')if __name__ == '__main__':# 此处要注意,windows下开启进程一定要在main方法下开启process1 = Process(target=task, args=('1',))process2 = Process(target=task, args=('2',))# 启动进程process1.start()  # 告诉操作系统帮你创建一个进程process2.start()print(f'主进程 {os.getpid()}')
  • 方式二

    import os
    import time
    from multiprocessing import Process# 继承类的方式去创建
    class MyProcess(Process):def __init__(self, name):# 继承Process中的__init__()super(MyProcess, self).__init__()self.name = name# 此处必要在该类中创建run方法 重写run方法def run(self):print(f'进程 {self.name} 的PID为{os.getpid()},父进程ID为 {os.getppid()}')time.sleep(2)print(f'进程 {self.name} 的PID为{os.getpid()} 运行结束')if __name__ == '__main__':# 创建两个进程process1 = MyProcess('1')process2 = MyProcess('2')# 开启这两个进程process1.start()process2.start()print(f'主进程 {os.getpid()}')

    运行结果如下:

    """
    主进程 2776
    进程 1 的PID为9364,父进程ID为 2776
    进程 2 的PID为4140,父进程ID为 2776
    进程 1 的PID为9364 运行结束进程 2 的PID为4140 运行结束
    """

2.创建线程的两种方式

  • 方式一

    import time
    from threading import Thread# 实例化一个multiprocessing.Process的对象,并传入一个初始化函数对象
    def task(name):print(f"线程 {name} is running")time.sleep(2)print(f"线程 {name} is over")if __name__ == '__main__':# 开启线程不需要在main下面执行代码,直接书写就可以# 但是还是习惯性的将启动命令写在main下面# 创建两个线程thead1 = Thread(target=task, args=('1',))thead2 = Thread(target=task, args=('2',))# 开启两个线程thead1.start()  # 创建线程的开销非常小,几乎代码一执行线程就创建了thead2.start()print("主")
  • 方式二

    import time
    from threading import Thread# 继承类的方式去创建
    class MyThead(Thread):def __init__(self, name):#  继承Process中的__init__()super(MyThead, self).__init__()self.name = name# 此处必要在该类中创建run方法 重写run方法def run(self):print(f"线程 {self.name} is running")time.sleep(2)print(f"线程 {self.name} is over")if __name__ == '__main__':# 创建两个线程thead1 = MyThead('1')thead2 = MyThead('1')# 开启这两个线程thead1.start()thead2.start()print('主')
  • 输出结果为如下:

    """
    线程 1 is running
    主
    线程 2 is running
    线程 1 is over线程 2 is over
    """

上方只是简单的创建进程和线程,以上注释只是个人理解,不足的地方还望见谅,欢迎补充

  相关解决方案