终止 python 中的线程、进程、函数



我对python很陌生,有一段时间我试图解决特定的问题。我有收听和打印收音机帧的功能。为此,我正在使用NRF24 Lib,整个功能非常简单。关键是我运行这个函数,不时我需要终止它并再次运行。所以在代码中它看起来像

def recv():
    radio.openWritingPipe(pipes[0])
    radio.openReadingPipe(1, pipes[1])
    radio.startListening()
    radio.stopListening()
    radio.printDetails()
    radio.startListening()
    while True:
        pipe = [0]
        while not radio.available(pipe):
            time.sleep(10000/1000000.0)
        recv_buffer = []
        radio.read(recv_buffer)           
        print(recv_buffer)

我从服务器端运行此功能,现在我想停止它并再次运行?有没有可能?为什么我不能 recv.kill((?我读过线程、多处理,但所有这些都没有给我正确的结果。

我如何运行它:

    from multiprocessing import Process
      def request_handler(api: str, arg: dict) -> dict:
          process_radio = Process(target=recv())
      if api == 'start_radio':
           process_radio.start()
           ...
      elif api == 'stop_radio':
           process_radio.terminate():
           ...
...
没有

办法"从外部"阻止Python线程。如果线程进入等待状态(例如,由于等待radio.recv()完成而未运行(,则无能为力。

在单个进程中,线程是自主的,最好的

办法是设置一个标志,让线程在检查它时采取行动(通过终止(。

正如您已经发现的那样,您似乎可以终止子进程,但随后您会遇到进程如何相互通信的问题。

您的代码和使用它的测试并没有真正提供足够的信息(Python 中似乎有几个 NRF24 实现(来调试您报告的问题。

相关内容

  • 没有找到相关文章

最新更新