专栏首页python3python 多线程的使用

python 多线程的使用

在实际编程过程中经常需要把任务包装成多进程或者多线程,多进程和多线程的区别在于多线程是内存共享、变量等共享的,多进程的进程间是独立运行的,所以创建多线程还是多进程取决于不同的需求。

python中因为有全局锁的机制,所以在python中多线程跑的时候其实只是在用一个CPU,尽管如此,多线程跑还是比单线程跑要快很多。

以threading.Thread来说,在python中创建多线程大致有两种方式。

方式1

在子类中调用threading.Thread类

import threading.Thread

class Metric_Collector(threading.Thread):

    def __init__(self):

        threading.Thread.__init__(self)

    def run(self):

        print "Testing....."

        time.sleep(10)

for i in range(10):

    t = Metric_Collector()

    t.start()

threading.Thread类中也有run()方法,在Metric_Collector类中重写了run()方法,这样写代码读起来比较结构化。

方式2

在threading.Thread实例中调用方法

import threading.Thread

class Metric_Collector(object):

    def __init__(self):

        pass

    def move(self, var1, var2):

        print "Testing.....%s %s" % (var1, var2)

collector = Metric_Collector()

for i in range(10):

    t=threading.Thread(target = colector.move, args = (var1, var2))

    t.start()

这种方法在使用中比较自由。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python面向对象(类之间的关系)

            执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.

    py3study
  • Python中使用枚举类

    其实有更好的方法:为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。 Python中提供了Enum类来实现这个功能:

    py3study
  • Python:线程、进程与协程(6)——

        上篇博文介绍了multiprocessing模块的内存共享(点击此处可以参看),下面讲进程池。有些情况下,所要完成的工作可以上篇博文介绍了multipr...

    py3study
  • Python面向对象(类之间的关系)

            执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.

    py3study
  • Python:线程、进程与协程(6)——

        上篇博文介绍了multiprocessing模块的内存共享(点击此处可以参看),下面讲进程池。有些情况下,所要完成的工作可以上篇博文介绍了multipr...

    py3study
  • python 类之间的关系

            执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的.

    py3study
  • DQN系列(2): Double DQN算法原理与实现

    论文地址: https://arxiv.org/pdf/1509.06461.pdf

    J.Q.Wang@2048
  • 85-OOP之继承

    如果两个类有很多相同之处,使用继承更为合理。 新品玩具熊增加了一个跑的行为,其他与原来的玩具熊一致。

    凯茜的老爸
  • Python学习笔记-SQLSERVER

    环境 : python3.6 / win10 / vs2017 / sqlserver2017

    py3study
  • 原 基于HTML5的WebGL电信网管3D

    HT_hightopo

扫码关注云+社区

领取腾讯云代金券