如何从两个python程序制作一个应用程序?

dkqlctbz  于 2022-11-27  发布在  Python
关注(0)|答案(2)|浏览(163)

我有两个python程序,其中一个连接到蓝牙设备(套接字包),它从设备接收并保存数据,另一个读取存储的数据并绘制真实的图。我应该从这两个程序中制作一个应用程序。
我尝试混合这两个python程序,但由于蓝牙应该等待接收数据(通过while循环),程序的其他部分不工作。我试图用Clock.schedule_interval解决这个问题,但程序会在一段时间后挂起。所以我决定同时运行这两个程序。我读到,我们可以使用a python script同时运行一些python程序。有什么技巧可以将这两个程序结合起来构建一个应用程序吗?如果有任何帮助,我们将不胜感激。

yhxst69z

yhxst69z1#

尝试打开两个命令以运行python文件:

py filename.py


在Windows上,您可以使用批处理脚本(在Linux上,您可以使用bash脚本)。
创建扩展名为.bat的文件:

example.bat

右键单击-〉编辑。
example.bat:

py file1.py & py file2.py
Pause

你可以删除“暂停”。它使它,所以你必须按回车键退出时,完成。
双击example.bat

4xy9mtcn

4xy9mtcn2#

要在线程函数和主函数之间进行通信,可以使用queu.Queue和threading.Event等对象。
蓝牙功能可以被置于作为线程目标的功能中,

import time
from threading import Thread
from queue import Queue

class BlueToothFunctions(Thread):
    def __init__(self, my_queue):
        super().__init__()
        self.my_queue = my_queue
        # optional: causes this thread to end immediately if the main program is terminated
        self.daemon = True

    def run(self) -> None:
        while True:
            # do all the bluetooth stuff foreverer
            g = self.my_queue.get()
            if g == (None, None):
                break
            print(g)
            time.sleep(1.0)
        print("bluetooth closed")

if __name__ == '__main__':
    _queue = Queue()  # just one way to communicate to a thread
    # pass an object reference so both main and thread have a way to communicate on this common queue
    my_bluetooth = BlueToothFunctions(_queue)
    my_bluetooth.start()  # creates the thread and executes run() method

    for i in range(5):
        # communicate to the threaded functions
        _queue.put(i)
    _queue.put((None, None))  # optional, a way to cause the thread to end
    my_bluetooth.join(timeout=5.0)  # optional, pause here until thread ends
    print('program complete')

相关问题