这是我的代码:
import time
import keyboard #pip install keyboard - could use pynput listener instead.
from threading import Thread
hshtag = int(0)
done = False
fire = False
def StopStart(fire):
while not done:
global fire
if keyboard.is_pressed('#'):
hshtag = hshtag + 1
if hshtag % 2 ==0:
fire = False
else:
fire = True
return fire
def NormalFire():
while not done:
global fire
if fire == True:
#do x
else:
pass
t1 = Thread(target = StopStart)
t2 = Thread(target = NormalFire(fire))
t1.start()
t2.start()
问题是函数StopStart(应)影响Normalfire的功能,但由于该函数仅在开始运行时才接受fire的值(因此不起作用)。我想要的是更改normalfire用stopstart执行的功能。如果您想知道为什么要使用线程化,因为“ #do x”实际上需要一段时间才能工作,所以如果我在错误的时间单击哈希值,它就不会停止,因此作为一个连续脚本。也许我可以改为使用类,但不能很好地使用类,因此如果有人可以提供帮助或修复上面的代码,将非常感谢。
尝试解释顶层代码出了什么问题的新尝试-好的,因此这两个函数应该同时运行(它们确实在运行)-因此,那里没有问题。但是当函数StopStart将布尔火更改为true / false时,我希望它使我的NormalFire函数更改其所做的事情-当我还没有单击哈希时什么也没有,如果我单击一次哈希则没有什么,但是如果我单击哈希在其运行时将完成其运行,然后不执行任何操作,等待再次单击哈希。
对不起,我不清楚我的问题是否将这段代码简化为我的核心问题。
##imports
import time
import keyboard #pip install keyboard - could use pynput listener instead.
from threading import Thread
##variable assigning
hshtag = int(0)
done = False
fire = False
def x():
while not done:
fire = True
return fire
def y(fire):
while not done:
if fire:
print('ok')
else:
pass
t1 = Thread(target = x)
t2 = Thread(target = y(fire))
t1.start()
t2.start()
当前,即使我在函数x中设置了“ fire = true”并返回该代码,上述代码也不会输出任何内容,我将如何编辑此代码,以便当布尔fire更改为true时,函数y开始可以打印吗?>
像Nair一样建议编辑也不会返回任何内容,并且15秒钟后程序将停止运行编辑后的代码:
##imports
import time
import keyboard #pip install keyboard - could use pynput listener instead.
from threading import Thread
##variable assigning
hshtag = int(0)
done = False
fire = False
def StopStart():
while not done:
fire = True
return fire
def NormalFire():
while not done:
if fire:
print('ok')
else:
pass
t1 = Thread(target = StopStart)
t2 = Thread(target = NormalFire)
t1.start()
t2.start()