多线程threading执行顺序问题 我真的抓狂了,跪求大神
求大神开导,明明有join 说明要等待线程结束后,才继续往下执行,为啥这个代码运行出来,首先就给我把下面的打印列表执行了呢?如果是我写的有问题,哪应该如何更正呢?
#utf-8
import threading
import time
class CheShi():
def __init__(self):
self.abc = []
self.liebiao =
self.lock = threading.Lock()#Lock 第一个字母大写。
def tianjia(self,i):
with self.lock:
time.sleep(0.1)
self.abc.append(i)
print(self.abc)
# print(threading.currentThread().name)
def many_threading(self):
duoxiancheng = []
for i in self.liebiao:
duoxiancheng.append(threading.Thread(target=self.tianjia,args=(i,)))
print(duoxiancheng)
for x in duoxiancheng:
x.start()
for y in duoxiancheng:# 这里明明有join啊 ,为什么会先执行下面的print
y.join
print(f'aaaaaaaaaaaaaaaaa{ceshi1.abc}') #第一个被打印出来的是他, 我疯了。
if __name__ =="__main__":
ceshi1 = CheShi()
ceshi1.many_threading() 这个是执行结果
aaaaaaaaaaaaaaaaa[]
y.join() suchocolate 发表于 2021-11-6 18:53
y.join()
牛逼,一眼就发现问题了, 从入门到富豪 发表于 2021-11-6 18:54
牛逼,一眼就发现问题了,
多用pycharm或vscode,这些拼写上的问题,它会自动提示你的:
suchocolate 发表于 2021-11-6 18:57
多用pycharm或vscode,这些拼写上的问题,它会自动提示你的:
大佬,我终于知道这个阴影是啥意思了,非常感谢, 刚刚才发现你的答复。
页:
[1]