名称';运行';在全局声明之前分配给 我对Python已经使用过C++语言和C++语言很陌生,不理解编译器向我扔的错误。
我试图创建一个全局bool,当线程函数更改为false时停止它 到目前为止,我的代码是:名称';运行';在全局声明之前分配给 我对Python已经使用过C++语言和C++语言很陌生,不理解编译器向我扔的错误。,python,Python,我试图创建一个全局bool,当线程函数更改为false时停止它 到目前为止,我的代码是: import random import math import threading import time listOfParticles = [] listOfThreads = [] run = False def printList(): print("New List :") for i in listOfParticles: print(
import random
import math
import threading
import time
listOfParticles = []
listOfThreads = []
run = False
def printList():
print("New List :")
for i in listOfParticles:
print(str(i[0]) + "," + str(i[1]))
def moveParticle(partID):
while (True):
if(run == False): return
else:
dir = random.randrange(0,360)
dist = random.random()
distx = math.cos(math.radians(dir))*dist
disty = math.sin(math.radians(dir))*dist
listOfParticles[i][0] += distx
listOfParticles[i][1] += disty
def startMove():
global run
run = True
for i in range(len(listOfParticles)):
t = threading.Thread(target=moveParticle, args=(i,))
listOfThreads.append(t)
for i in listOfThreads:
i.start()
if __name__ == "__main__":
global run
for i in range(10):
listOfParticles.append([random.random(), random.random()])
startMove()
while(run):
printList()
time.sleep(0.001)
run = False
这个代码给了我一个错误
File "d:\Programming\repos\Parallel\repos\Python\Lab 4\threadedParticles.py", line 38
global run
^
SyntaxError: name 'run' is assigned to before global declaration
让我困惑的是全局定义上发生了错误。这里不需要
global
if
name中的代码与run=False
的范围相同,因为它不是一个函数,而只是一个常规的if
条件。否,此代码给出name错误:未定义名称“False”
。请提供产生您所说的错误的正确代码。发布的代码有多个对true
和false
的引用,您尚未定义这些引用。Python定义了True
和False
,但不是它们的小写版本。你实际运行的是什么代码?@TomKarzes我编辑了它来修复这个问题,在使用了这里的一个答案后,我修复了我的错误,然后发现了正确/错误的问题并修复了它too@watsom27不,你修正了一些参考资料。有些仍然存在。我看到run=false
和run=true
。您看不到吗?名称“random”未定义
,则名称“startMove”未定义
。。。请花点时间来写一个正确的、可回答的问题,提供准确的、可运行的代码,而不是像你说的那样工作的版本。