ITPub博客

首页 > 应用开发 > Python > Python进程与线程知识

Python进程与线程知识

原创 Python 作者:好程序员 时间:2020-11-26 17:36:10 0 删除 编辑

   好程序员Python 培训分享进程与线程知识 Python 开发语言现在已经是被大家非常看中的编程语言了,本篇文章给读者们分享一下 Python 进程与线程知识小结,本篇文章具有一定的参考借鉴价值,感兴趣的小伙伴来了解一下吧,希望对小伙伴们有帮助。

传统方式是调用2 个方法执行 1 个任务,方法按顺序依次执行:

# -*- coding:utf-8 -*-

import threading

import time

def run(n):

  print('task',n)

  time.sleep(3)

if __name__ == '__main__':

  run('t1')

  run('t2')

 

多线程例子

 

2 个线程同时并发执行 1 个任务:

 

# -*- coding:utf-8 -*-

import threading

import time

def run(n):

  print('task',n)

  time.sleep(3)

 

if __name__ == '__main__':

  t1=threading.Thread(target=run,args=('t1',))

  t2=threading.Thread(target=run,args=('t2',))

  t1.start()

  t2.start()

 

自己写一个类继承继承threading.Thread

 

# -*- coding:utf-8 -*-

import threading

import time

class MyThread(threading.Thread):

  def __init__(self,n):

    super(MyThread,self).__init__()

    self.n=n

  # 这里面默认就有一个 run 方法

  def run(self):

    print('runing task',self.n)

if __name__ == '__main__':

  # 在主方法通过对象调用线程

  t1=MyThread('t1')

  t2=MyThread('t2')

  t1.run()

  t2.run()

 

使用for 循环启动多个线程

 

# -*- coding:utf-8 -*-

import threading

import time

def run(n):

  print('task',n)

  time.sleep(3)

if __name__ == '__main__':

  for i in range(10):

    t=threading.Thread(target=run,args=('t-%s'%i,))

    t.start()

 

 

等多线程同时执行完后,再执行其它代码,因为线程是与其它代码一起运行的

 

# -*- coding:utf-8 -*-

import threading

import time

def run(n):

  print('task',n)

  time.sleep(3)

if __name__ == '__main__':

  time_start=time.time()

  # 定义一个空列表装线程 t 实例

  t_objects=[]

  for i in range(10):

    t=threading.Thread(target=run,args=('t-%s'%i,))

    t.start()

    t_objects.append(t)

  # 等所有线程执行完后,再执行下面的代码

  # 因为线程与下面的代码是同时运行的

  # 要想先等线程执行完毕再执行其它代码

  # 使用 join() 方法进行阻塞

  # 在这里统一结束所有 t 线程

  for i in t_objects:

    t.join()

  time_end=time.time()

  sun=time_end-time_start

  print(sun)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913864/viewspace-2737329/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    155234