代码创建进程和线程的两种方式
"""
定心丸: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 """
上方只是简单的创建进程和线程,以上注释只是个人理解,不足的地方还望见谅,欢迎补充
内容来源于网络如有侵权请私信删除
文章来源: 博客园
原文链接: https://www.cnblogs.com/debug-the-world/p/13459129.html
- 还没有人评论,欢迎说说您的想法!