Python启动100个线程非常慢

时间:2020-01-31 11:53:14

标签: python multithreading concurrent.futures

我正在尝试利用python中的线程。

我需要每个线程使用不同的参数来调用相同的函数(使用while(True)循环)。

因此,在这个示例中,我创建了81个对象(交易者),并将它们全部添加到列表(交易者)中。 然后,我使用current.futures库启动线程。

'exec_strats'是使用while(True)循环的函数。

for ma_range in range(10, 200, 10):
    for overhead in range(1, 10, 1):
        trader = Trader(id=str(ma_range)+':'+str(overhead))
        header.append(trader.id)
        args = [trader, ma_range, overhead]
        trader.add_strat(exec_strat_sec, args)
        traders.append(trader)

start = time.time()

result = concurrent.futures.ThreadPoolExecutor(max_workers=len(traders)).map(exec_strats, traders)

end = time.time()
print("Time for "+str(len(traders))+" threads to start : " + str(end - start) + " seconds")

要启动9个线程,大约需要3秒钟。要启动100个线程,大约需要5分钟。

任何人都可以向我解释我的代码是否有问题,或者我不应该使用python进行这种多线程处理,为什么?


修改1

感谢您的快速答复,

为澄清起见,每个任务只需要1个工作人员,但是我需要所有工作人员同时工作,而另一个工作则不需要1个工作人员。该任务执行的计算非常简单,需要永远重复。

0 个答案:

没有答案
相关问题