首页 > 解决方案 > 将字符串作为参数传递给 Python 的 threading.Thread

问题描述

我试图弄清楚如何在 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

标签: pythonmultithreading

解决方案


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

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()

推荐阅读