我有三个基站,它们必须并行工作,每10秒它们会收到一个列表,其中包含关于它们集群的信息,我想运行这个代码大约10分钟。因此,每10秒我的三个线程就必须用新参数调用目标方法,这个过程应该持续10分钟。我不知道如何做到这一点,但我想出了下面的想法,这似乎不是一个很好的一个!所以我很感激你的帮助。你知道吗
我有一个名为base\u centroid\u assign的列表,我想把它的每一项传递给一个不同的线程。列表内容将经常更新(假设为10秒),因此我希望回忆我以前的线程,并将更新项提供给它们。你知道吗
在下面的代码中,列表包含三个项目,其中包含多个项目(嵌套)。我想在执行非常简单的目标函数后停止三个线程,然后用update item调用线程;但是,当我运行下面的代码时,我得到了30个线程!(运行时间变量为10,列表长度为3)。你知道吗
我如何实现上面提到的想法?你知道吗
run_time = 10
def cluster_status_broadcasting(info_base_cent_avr):
print(threading.current_thread().name)
info_base_cent_avr.sort(key=lambda item: item[2], reverse=True)
start = time.time()
while(run_time > 0):
for item in base_centroid_assign:
t = threading.Thread(target=cluster_status_broadcasting, args=(item,))
t.daemon = True
t.start()
print('Entire job took:', time.time() - start)
run_time -= 1
欢迎使用Stackoverflow。你知道吗
线程同步的问题处理起来非常棘手,以至于Python已经有了一些非常有用的库来专门处理这些任务。这样的主要库是python3中的
queue.Queue
。其思想是为每个“工作者”线程设置一个队列。主线程收集并put
新数据到队列中,并让子线程get
从该队列中获取数据。你知道吗当您调用
Queue
的get
方法时,它的正常操作是阻塞线程,直到有可用的内容,但您可能希望线程继续处理当前的输入,直到有新的输入可用为止,在这种情况下,如果主线程中没有任何数据,则轮询队列并继续处理当前数据更有意义。你知道吗我在对this question的回答中概述了这种方法,不过在这种情况下,工作线程实际上是在另一个队列上发送返回值。你知道吗
工作线程的
run
方法的结构需要类似于以下伪代码:您可能希望添加逻辑,以便在接收到
None
等sentinel值时干净地终止线程。你知道吗相关问题 更多 >
编程相关推荐