问题描述: 我正在使用模拟器从中提取一些数据集。这个想法是运行多个进程来执行各种任务。例如:使用一个过程移动车辆并使用另一个过程收集数据。在数据采集过程中,有3个线程在运行以记录三种不同的数据类型,并且记录必须定期进行。另外,数据要同步记录。
提供的示例代码没有详细信息。
import threading
import multiprocessing
import time
class DataRecorder:
def __init__(self):
"""
some parameters
"""
pass
def move_vehicle(self, path):
pass
def record_data1(self):
pass
def record_data2(self):
pass
def record_data3(self):
pass
def record_data():
t1 = threading.Thread(target=self.record_data1)
t2 = threading.Thread(target=self.record_data2)
t3 = threading.Thread(target=self.record_data3)
threads = [t1, t2, t3]
for thread in threads:
thread.start()
while (True):
for thread in threads:
if not thread.is_alive()
thread.start() # leads to threads can only be started once
for thread in threads:
if thread.is_alive()
thread.join()
time.sleep(1)
def stop_recording(self, p1):
if p1.is_alive():
p1.terminate()
def move_and_record():
P1 = multiprocessing.Process(target=self.record_data)
P1.start()
self.move_vehicle(path)
self.stop_recording(P1)
问题:
RuntimeError: threads can only be started once.
在 while 循环中,线程在第一次迭代后停止。我试过没有 .join() 部分和 .join() 部分。
我也在寻找解决此问题的另一种方法。