【发布时间】:2019-03-02 11:53:19
【问题描述】:
我有三个基站,它们必须并行工作,它们每 10 秒会收到一个列表,其中包含有关其集群的信息,我想运行此代码大约 10 分钟。因此,每 10 秒,我的三个线程必须使用新参数调用目标方法,并且此过程应该持续 10 分钟。我不知道该怎么做,但我想出了以下想法,这似乎不是一个好主意!因此,我感谢任何帮助。
我有一个名为 base_centroid_assign 的列表,我想将它的每个项目传递给不同的线程。列表内容会经常更新(比如10秒),所以想回忆一下我之前的帖子,把更新的项目给他们。
在下面的代码中,列表包含三个项目,其中包含多个项目(它是嵌套的)。我想让三个线程在执行完相当简单的目标函数后停止,然后用更新项调用线程;但是,当我运行下面的代码时,我得到了 30 个线程! (run_time 变量为 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
【问题讨论】:
-
@jpmc26 非常感谢您的精彩视频!
标签: python multithreading