一. 代码import multiprocessing as mpimport threading as tdimport timedef job(q):res = 0for i in range(1000000):res += i+i**2+i**3q.put(res) # queuedef multicore():q = mp.Queue()p1 = mp.Process(targe...

一. 代码
import multiprocessing as mp
import threading as td
import time
def job(q):
res = 0
for i in range(1000000):
res += i+i**2+i**3
q.put(res) # queue
def multicore():
q = mp.Queue()
p1 = mp.Process(target=job, args=(q,))
p2 = mp.Process(target=job, args=(q,))
p1.start()
p2.start()
p1.join()
p2.join()
res1 = q.get()
res2 = q.get()
print('multicore:' , res1+res2)
def normal():
res = 0
for _ in range(2):
for i in range(1000000):
res += i+i**2+i**3
print('normal:', res)
def multithread():
q = mp.Queue()
t1 = td.Thread(target=job, args=(q,))
t2 = td.Thread(target=job, args=(q,))
t1.start()
t2.start()
t1.join()
t2.join()
res1 = q.get()
res2 = q.get()
print('multithread:', res1+res2)
if __name__ == '__main__':
st = time.time()
normal()
st1= time.time()
print('normal time:', st1 - st)
multithread()
st2 = time.time()
print('multithread time:', st2 - st1)
multicore()
print('multicore time:', time.time()-st2)
二. 运行结果
三. 分析
由上图可知,在IO不是特别多的时候,多线程不一定节约时间,而多进程是可以节约时间的。
沃梦达教程
本文标题为:Python之多进程(multiprocessing)学习【3】:平常状态,多线程,多进程比较


基础教程推荐
猜你喜欢
- pythonNet 04多任务编程进程 2023-09-03
- Python 网页请求之requests库的使用详解 2022-10-20
- 如何将rfcomm shell命令的结果放入python中的变量中? 2023-11-13
- Python比较“+”和append()增加列表元素 2023-09-04
- python multiprocessing-在正在运行的进程上进行类似选择,以查看已完成的进程 2023-11-14
- Anaconda如何查看自己目前安装的包详解 2023-08-04
- 【Python】进程和多线程分别适用于什么情况? 2023-09-05
- python--多线程--多进程--单元测试 2023-11-11
- 如何在关机时通过无限循环停止Python守护进程线程? 2023-11-11
- 解决Python复杂zip文件的解压问题 2023-08-08