将字符串传递给Python的threading.Thread作为arg

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (393)

我试图弄清楚如何在Python中传递一个字符串作为参数threading.Thread。之前遇到过这个问题:Python Threading String Arguments

传递字符串有更好的方法吗? 必须有一个更明显的方式,而我只是太新了编码来解决它。

代码块A.

import threading

def start_my_thread():
    my_thread = threading.Thread(target=my_func, args="string")
    my_thread.start()

def my_func(input):
    print(input)

结果: TypeError: my_func() takes 1 positional argument but 6 were given

代码块B.

import threading

def start_my_thread():
    my_thread = threading.Thread(target=my_func, args=("string",))
    my_thread.start()

def my_func(input):
    print(input)

结果: string

提问于
用户回答回答于

您可以继承Thread,并将my_func定义为run方法。并创建一个新实例。

import threading


class MyThread(threading.Thread):
    def __init__(self,string):
        super().__init__()
        self.string = string
    def run(self):
        print(self.string)
# def start_my_thread():
#     my_thread = threading.Thread(target=my_func, args=("string",))
#     my_thread.start()

# def my_func(input):
#     print(input)

if __name__ == "__main__":
    MyThread("hello").start()

扫码关注云+社区

领取腾讯云代金券