如何多线程(多进程)加速while循环(语言-python)

问题是利用如下代码并没有起到加速循环,提高效率的目的。

import numpy as np
import os
import sys
import multiprocess as mp
import time

def MCS(input_data, med):
t1 = time.perf_counter()
left = 0
lp = 0
while True:
lp = lp + 1
data_pool = input_data + left
output_data = med * 0.05 * data_pool / (10000 + med)
output_data = np.where(output_data > data_pool, data_pool, output_data)
left = data_pool - output_data
cri = (input_data - output_data) / input_data * 100
print(lp, data_pool, output_data, cri)
if cri <= 1:
break
t2 = time.perf_counter()
print(f'Finished in {t2 - t1} seconds')

if name == 'main':
pool = mp.Pool(processes=10)
pool.apply_async(MCS, args=(100, 0.4))
pool.close()
pool.join()

运行结果和没有使用多线程的结果相差不大。希望可以利用多线程显著提高while循环的速度,节省时间。

题主你这个好像还是单线程,你只加入了一个MCS线程到线程池里https://www.cnblogs.com/CircleWang/p/15705467.html

正确的做法应该是将while循环拆成很多个小份,每个线程执行一部分,最后将结果汇总

线程并不是开的越多越好,比如你的cpu是16个线程,他需要频繁切换线程,你的线程池只负责调度,这样频繁切换反而会变慢,听懂掌声。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632