python中的多线程方法

import threading

# 通过函数调用的方式实现多线程

def my_print(info):

  time.sleep(random.randint(1,10))

  print(info + "被执行")

 

if __name__ == __main__:

  t1 = threading.Thread(target = my_print, args = ("线程1",)) #target参数接受要执行的函数,                                                  #args参数接受函数传进来的参数,元组表示,后面要多加个逗号

  t2 = threading.Thread(target = my_print, args = ("线程2",))

  t3 = threading.Thread(target = my_print, args = ("线程3",))

 

  t1.start() #启动线程

  t2.start()

  t3.start()

会发现每次运行时,各线程运行的顺序时随机的

 

#演示下线程和进程之间的关系

from threading import Thread

from multiprocessing import Process

 

def work():

  print(os.getpid())

 

if __name__ == __main__:

  t1 = Thread(target=work)

  t2 = Thread(target=work)

  t1.start()

  t2.start()

  print("主进程下的主线程PID", os.getpid())

 

  #开启多个进程, 每个进程都有独立的PID

  p1 = Process(target=work)

  p2 = Process(target=work)

  print("主进程下的主线程PID", os.getpid())

 

运行上面的代码,会发现,通过Thread实现多线程运行时,因为这些线程和主线程同属一个进程,所以进程的PID是相同的,通过Process实现多进程时,发现p1,p2属于不同进程运行,他们的PID和主线程所在的进程就不一样了。

 

#线程类来实现多线程

from threading import Thread

class Hello(Thread):

  def __init__(self,name):

    super().__init()__

    self.name=name

  

  def run(self):                 # Thread的start方法被调用时,会自动执行run方法,因此这里需要                                                #重写run方法,这样就会调用这个run方法,所有的逻辑程序就放这 个run方法里

    print("hello %s"  % self.name)

 

t1=Hello("我时一个线程类1")

t2=Hello("我时一个线程类2")

t3=Hello("我时一个线程类2")

t1.start()

t2.start()

t3.start()

 

 

  

posted @ 2019-12-30 15:42  老方学编程  阅读(425)  评论(0编辑  收藏  举报