ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python中的多线程方法

2019-12-30 15:54:45  阅读:181  来源: 互联网

标签:__ target Thread python start 线程 print 多线程 方法


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()

 

 

  

标签:__,target,Thread,python,start,线程,print,多线程,方法
来源: https://www.cnblogs.com/laofang/p/12120075.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有