python多线程的坑

问题记录

1、在for循环下创建线程,会一次性全部创建,消耗内存

import threading

 

def test():

  print('test')

for i in range(1000);

  t = threading.Thread(target=test)

# 此时已经新建了1000个线程对象

 

2、多线程不能同时操作一个类实例

一个类被实例化为一个对象后,该对象的方法不能被多进程,多线程同时调用。

但是,当该方法被赋给一个变量后,就可以被同时调用了。

示例如下:

import threading

 

class Test(object):

  def test():

    print('test')

 

t = Test()

for i in range(4):

  t = threading.Thread(target=t.test)

#  AttributeError: 'Thread' object has no attribute 'test'

x = t.test

for i in range(4):

  t = threading.Thread(target=x)

# ok

 

posted @ 2019-10-15 16:41  向往前方  阅读(1130)  评论(0编辑  收藏  举报