从入门到富豪 发表于 2021-11-6 18:51:07

多线程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()

从入门到富豪 发表于 2021-11-6 18:51:50

这个是执行结果
aaaaaaaaaaaaaaaaa[]


suchocolate 发表于 2021-11-6 18:53:15

y.join()

从入门到富豪 发表于 2021-11-6 18:54:12

suchocolate 发表于 2021-11-6 18:53
y.join()

牛逼,一眼就发现问题了,

suchocolate 发表于 2021-11-6 18:57:31

从入门到富豪 发表于 2021-11-6 18:54
牛逼,一眼就发现问题了,

多用pycharm或vscode,这些拼写上的问题,它会自动提示你的:

从入门到富豪 发表于 2021-11-7 09:43:29

suchocolate 发表于 2021-11-6 18:57
多用pycharm或vscode,这些拼写上的问题,它会自动提示你的:

大佬,我终于知道这个阴影是啥意思了,非常感谢, 刚刚才发现你的答复。
页: [1]
查看完整版本: 多线程threading执行顺序问题 我真的抓狂了,跪求大神