在进程python中多次运行线程

时间:2021-05-19 11:25:27

标签: python multithreading python-multiprocessing

问题描述: 我正在使用模拟器从中提取一些数据集。这个想法是运行多个进程来执行各种任务。例如:使用一个过程移动车辆并使用另一个过程收集数据。在数据采集过程中,有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() 部分。

我也在寻找解决此问题的另一种方法。

0 个答案:

没有答案