所有非本地变量都位于模块下代码的顶部。 我正在使用多线程来同时使用多个函数,甚至在将它与其他循环进行比较时我也无法弄清楚它为什么不起作用。
def SQUIRE():
global currency
global alive
global squire
while alive == True and squire == True:
chanceA = random.randint(1, 100)
if chanceA <= 10:
currency += 10
print("You have delivered a message for 10 currency. You now own", currency, " currency.")
time.sleep(1)
它应该检查man()alive = True并且如果squire = true,则选择1到100之间的随机数。如果该数字介于1和10之间,则将10添加到货币。 相反,它什么也没做。
以下是完整的参考代码。 这可能是一个糟糕的混乱,当我学习Python时,这只是我正在研究的一个方面。只有几天了。
答案 0 :(得分:1)
似乎发生了squire
为False
,因此循环无法执行。
使用线程时,你应该知道一般来说并不能保证线程会以某种顺序执行,它们实际上是并行运行的,并且可能会发生SQUIRE
线程进入测试在任何其他线程能够将其更改为squire
之前True
变量。
答案 1 :(得分:0)
当您使用多个线程时,您应该等待线程池中的每个线程完成对资源的访问。因此,您应该在启动线程后使用t.join()
。