gpt4 book ai didi

python - 如何在 python 中更改正在运行的线程中的参数值

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:53 24 4
gpt4 key购买 nike

如何更改在线程 (python) 中无限循环中运行的函数的参数?我是线程和 python 的新手,但这是我想做的(简化),

class myThread (threading.Thread):
def __init__(self, i):
threading.Thread.__init__(self)

def run(i):
self.blink(i)

def blink(i):
if i!=0:
if i==1:
speed=0.10
elif i==2:
speed=0.20
elif i==3:
speed=0.30

while(true):
print("speed\n")

i=3
blinkThread=myThread(i)
blinkThread.start()

while(i!=0):
i=input("Enter 0 to Exit or 1/2/3 to continue\n")
if i!=0:
blinkThread.run(i)

现在,显然这段代码给出了关于 run() 方法的错误。我想在无限循环中运行函数 blink() 但更改“i”变量。如果没有线程,我也无法做到这一点,因为我有其他代码部分正在执行并行任务。我能做些什么?谢谢!

最佳答案

首先要学习的最好的事情是永远不要更改来自不同线程的变量。通过队列进行通信:

import threading
import queue

def drive(speed_queue):
speed = 1
while True:
try:
speed = speed_queue.get(timeout=1)
if speed == 0:
break
except queue.Empty:
pass
print("speed:", speed)

def main():
speed_queue = queue.Queue()
threading.Thread(target=drive, args=(speed_queue,)).start()
while True:
speed = int(input("Enter 0 to Exit or 1/2/3 to continue: "))
speed_queue.put(speed)
if speed == 0:
break

main()

关于python - 如何在 python 中更改正在运行的线程中的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166443/

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