python 并发编程 多线程 开启线程的两种方式

一 threading模块介绍

multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性

二 开启线程的两种方式

第一种

每造一个进程,默认有一个线程,就是主线程。

进程要想执行,要先造一个主线程,然后由这个进程内的线程去运行代码

 

from threading import Thread
import time

def task(name):


    print("%s is running" % name)
    time.sleep(3)
    print("%s is done" % name)


if __name__ == "__main__":

    # 实例化
    # args 为函数传参数
    t = Thread(target=task, args=("子线程1",))
    # 开启子线程
    t.start()   # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别

    print("主线程")


'''
子线程1 is running
主线程
子线程1 is done
'''

 

上面程序开启了一个进程,两个线程,一个主线程,一个子线程。 主线程给操作系统发送信号,开启子线程

 

 

第二种

自己写一个子类去继承他
from threading import Thread
import time


# 自己写一个子类去继承他 不用默认的类
# Thread的类传进去

class MyThread(Thread):

    # 重写了init方法 父类就被覆盖掉
    def __init__(self, name):


        # 重用父类 因为父类还有很多有用功能,继承父类
        super().__init__()
        self.name = name

    # 方法一定要写run
    def run(self):
        print("%s is running" % self.name)
        time.sleep(3)
        print("%s is done" % self.name)

if __name__ == "__main__":

    # 实例化 直接用自己自定义的类开子线程
    # args 为函数传参数
    t = MyThread("子线程")
    #t 开启子线程
    t.start()   # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别

    # t.start() 本质是调用run方法
    print("主线程")


'''
子线程 is running
主线程
子线程 is done
'''

 

编写一个简单的文本处理工具,具备三个任务,一个接收用户输入,一个将用户输入的内容格式化成大写,一个将格式化后的结果存入文件

'''
需求:
编写一个简单的文本处理工具,具备三个任务,一个接收用户输入,一个将用户输入的内容格式化成大写,一个将格式化后的结果存入文件
'''

import json

num = input_user = input(">>>:").strip()
num = num.upper()

with open("1.txt", "w") as f:
    json.dump(num, f)

 

posted @ 2019-06-19 18:54  minger_lcm  阅读(1351)  评论(0编辑  收藏  举报