【问题标题】:线程由于某种原因停止了所有代码 - Python
【发布时间】:2022-01-22 21:34:28
【问题描述】:

我有一个启动 5 个线程的小循环, 但由于某种原因,循环在开始第一个循环后停止,不再继续启动其他线程


       for i in range(5):
           
           t = threading.Thread(target=Loop.fatman(ws_server=ws_server, sessionid=sessionid, serverid=serverid, myuid=myuid, tokenn=tokenn))
           t.daemon = True
           threads.append(t)
       

       print(print("loop finished (all threads created)")

由于某种原因,它没有转到print("loop finished (all threads created)")

【问题讨论】:

  • 您应该提供一个不起作用的代码的最小可运行示例。现在的代码甚至没有启动线程,所以我很难相信这不起作用。

标签: python multithreading


【解决方案1】:

我认为您的代码中有 2 个基本错误。

  1. 你必须传递一个callable给Threadtarget,但是你在你的代码中调用它-t = threading.Thread(target=Loop.fatman(ws_server=ws_server, sessionid=sessionid, serverid=serverid, myuid=myuid, tokenn=tokenn))这行实际上执行了函数fatman(),所以图中没有线程,主要线程将起作用。
  2. 您正在创建线程(即使调用了可调用对象),但您没有在任何地方启动它们。

请参阅下面的代码。它可以提供一些见解,可能不是一个完整的工作代码 - 因为我不知道你是否发布了一个完整的功能单元。

_callable = Loop.fatman
kwargs = dict(ws_server=ws_server, sessionid=sessionid, serverid=serverid, myuid=myuid, tokenn=tokenn)

for i in range(5):
    t = threading.Thread(target=_callable, kwargs=kwargs)
    t.daemon = True
    # start your thread, just not create
    t.start()
    threads.append(t)

print("loop finished (all threads created)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多