【问题标题】:Python Flask Application with Threads not running parallel线程不并行运行的 Python Flask 应用程序
【发布时间】:2022-01-16 12:14:53
【问题描述】:

我正在尝试构建一个 Python 程序,该程序通过 UDP 发送数据并有一个网站进行设置。 对于这个程序,我需要一个脚本来运行烧瓶网络服务器和一个脚本来同时提取数据。我想使用线程同时运行进程(Flask 服务器和数据拉/发送部分)。 因为我需要一直运行部分来拉取数据,所以我做了“While True:”,让它一直在运行 但是当我启动我的线程时,只有提取数据的线程正在运行。 我认为问题在于,我并没有真正同时运行 2 个线程。但我认为使用线程应该可以同时运行烧瓶线程和数据线程。 但我无法让它工作,我无法找出问题所在。

这是我试图启动两个线程的文件:

import threading
import time
import mainl
import webserver

class mydata(threading.Thread):
    def __init__(self, iD, name):
        threading.Thread.__init__(self)
        self.iD = iD
        self.name = name
    def run(self):
        mainl.mainloop()

class mywebserver(threading.Thread):
    def __init__(self, iD, name):
        threading.Thread.__init__(self)
        self.iD = iD
        self.name = name

    def run(self):
        webserver()

t1 = mydata(1, "t1")
t2 = mywebserver(2, "t2")
t2.start()
t1.start()

这是提取数据的文件,它应该始终运行,这就是我使用“While True:”的原因:

def mainloop():
    while True:
        import data1
        import data2
        import data3

        ###UDP###
        ip_adress = "192.168.178.150"
        udp_port = 8888

        text = ""
        data1 = data1.daten()
        data2 = data2.daten()
        data3 = data3.daten()
        # print("Coin STR", coin)
        time.sleep(3)
        text = "data1   data2   data3"
        send.senden(ip_adress, udp_port, text)

【问题讨论】:

  • 问题很可能在于 webserver() 函数,因为其余部分似乎都可以工作。
  • 当我只启动 Webserver() 时,服务器也在工作。但我发现, mainl 或 mainl.mainloop() 不是从线程运行的。我不知道它为什么启动,但是线程 t1 和 t2 甚至没有启动,因为 mainl 或 mainl.mainloop() 在线程启动之前已经在运行。为什么 mainl 或 mainl.mainloop() 已经在运行?我认为这将是问题所在。

标签: python multithreading flask


【解决方案1】:

我发现了问题,导入中的循环在导入时开始了。 所以程序没有继续。

现在我在主函数中运行导入。

要了解更多信息,我可以推荐这个: https://www.guru99.com/learn-python-main-function-with-examples-understand-main.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2022-10-18
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多