进程vs线程
Posted ledgua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程vs线程相关的知识,希望对你有一定的参考价值。
进程vs线程
进程vs线程创建速度
from threading import Thread
from multiprocessing import Process
import time
def task(name):
print(f'name is running')
time.sleep(2)
print(f'name is end')
if __name__ == '__main__':
t = Thread(target=task,args=('子线程',))
p = Process(target=task,args=('子进程',))
# t.start()
p.start()
print('主')
开启子线程的打印效果:
子线程 is running
主子线程 is end
开启子进程打印效果:
主子进程 is running
子进程 is end
进程和线程的创建速度
- 开启子进程需要申请资源开辟空间
- 慢
- 开启子线程只是告诉操作系统一个执行方案
- 快
多线程vs多进程
计算密集型
from threading import Thread
from multiprocessing import Process
import time
# 计算密集型
# def work1():
# res=0
# for i in range(100000000): #1+8个0
# res*=i
#
# if __name__ == '__main__':
# t_list = []
# start = time.time()
# for i in range(4):
# # t = Thread(target=work1)
# t = Process(target=work1)
# t_list.append(t)
# t.start()
# for t in t_list:
# t.join()
# end = time.time()
# # print('多线程',end-start) # 多线程 15.413789510726929
# print('多进程',end-start) # 多进程 4.711405515670776
IO密集型
# # io密集型
# def work1():
# x = 1+1
# time.sleep(5)
#
#
# if __name__ == '__main__':
# t_list = []
# start = time.time()
# for i in range(4):
# t = Thread(target=work1)
# # t = Process(target=work1)
# t_list.append(t)
# t.start()
# for t in t_list:
# t.join()
# end = time.time()
# print('多线程',end-start) # 多线程 5.002625942230225
# # print('多进程',end-start) # 多进程 5.660863399505615
以上是关于进程vs线程的主要内容,如果未能解决你的问题,请参考以下文章