我正在尝试利用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个工作人员。该任务执行的计算非常简单,需要永远重复。