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)