python - 将字符串作为参数传递给 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
解决方案
您可以继承 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()
推荐阅读
- api - 无法使用 Apache Nifi 的 INVOKEHTTP 处理器中的 Get 方法获取数据
- crystal-reports - Crystal Reports -- 将多行合并为一行
- java - Java中具有事务原子性的Java延迟框架
- javascript - Xpath:如果存在多个子项,则选择多个父项
- java - 为什么 Tomcat 会留下很多 CLOSE_WAIT 连接?
- javascript - Visual Studio Code:使用 Firefox ESR 调试 JavaScript
- markdown - pandoc 中有没有办法在代码块顶部包含文件名?
- ssl - 使用 StackExchange.Redis 与 Redis 建立 SSL 连接
- c# - 无法使用证书存储中的客户端证书,只能通过从文件加载
- android - 如何通过意图直接编辑而不是副本将 PDF 传递给 Android 上的 Adobe Reader?