gpt4 book ai didi

Python 3.4 多线程和传递变量

转载 作者:行者123 更新时间:2023-12-01 03:55:21 25 4
gpt4 key购买 nike

所以我一直不太擅长多线程,今天我遇到了一个我长期以来一直试图回避的问题。

我想将变量传递给在多个线程中执行的函数,但我不知道如何以函数方式执行此操作。

这是我所做的:

       # This is the thread starter
a = 0
while a < threads :
a +=1
print("[" + str(a) + "/" + str(threads)+ "] Thread started")
thread = myThread(payload=payload) # payload is the variable I'd like to pass
thread.start()

这就是类(class):

 class myThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run (self, payload) :
Checker(payload)

这是我遇到的错误:

TypeError: __init__() got an unexpected keyword argument 'payload'

如果有人不能启发我了解我做错了什么,我会很高兴。提前感谢大家!

最佳答案

您应该阅读有关 python 中的的更多信息。

您忘记在 Thread 实现的构造函数中定义 payload 参数。就这么简单:

class myThread (threading.Thread):
def __init__(self, payload): # you have to define the constructor parameter here
threading.Thread.__init__(self)
self.payload = payload
def run (self):
Checker(self.payload)

如果您不需要在自己的 Thread 实现中添加一些额外的内容,您可以简单地执行以下操作:

a = 0
while a < threads:
a +=1
print("[{0!s}/{1!s}] Thread started".format(a, threads))
thread = Thread(target=Checker, args=(payload,))
thread.start()

关于Python 3.4 多线程和传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com