今日概述:回顾了git的操作流程, 补充学习了正则表达式,初步学习了进程和线程,了解了多线程
git
1.git用于版本控制,托管代码
2.操作步骤:(1),git chone 将远端的仓库克隆到本地(2),初始化仓库:git init (3),git add . 提交文件 (4) git status 查看状态 (5) git commit -m + 文件名 提交文件 (6)git pull 将远端仓库的文件拉取下来同步 (7) git push origin master 将代码同步到远端仓库
- 新建分支:git branch + 文件名
正则表达式
- 详细的教程可以查看网上的(正则表达式30分钟入门教程)
进程和线程
- 进程:操作系统分配内存的基本单位,进程之间的内存是相互隔离的,进程之间通讯要通过IPC机制(管道,套接字)
import time
from multiprocessing import Process # 进程的写法
import os
# process
# thread
def output():
print(os.getpid())
while True:
print('Pong', end='')
time.sleep(0.01)
def main():
print(os.getpid())
Process(target=output).start() # 只能传函数名,表示进程骑起来后,在进程里调用的函数
while True:
print('Ping', end='',flush=True) # 缓冲你的输入输出数据
time.sleep(0.01)
if __name__ == '__main__':
main()
- 线程:1个进程可以划分为多个线程,线程是进程的执行单元,也是操作系统分为CPU的基本单元
- 多线程的使用地方:1,如果任务执行时间很长,可以把任务分成子任务,多线程提升程序的执行效率,缩短程序的执行时间
2, 改善用户的体验,让用户获得更好的体验
创建线程的方式:1, 直接创建Thread对象并通过target参数指定线程后要执行的任务
2, 基层Thread自定义编程,通过重写run方法指定线程启动后执行的任务
class PrintThread(Thread):
def __init__(self, string, count):
super().__init__()
self._string = string
self._count = count
def run(self):
for _ in range(self._count):
print(self._string, end='', flush=True)
count = 0
def output(string):
global count
inner_count = 0
while count < 1000:
print(string, end=' ', flush=True)
count += 1
inner_count += 1
print(inner_count)
# time.sleep(0.01)
def main():
# 守护线程- 不值得保留的线程 - 其他线程如果都执行完毕了那么守护线程自动结束
# daemon=True - 将线程设置为守护线程
t1 = Thread(target=output, args=('ping',), ) # daemon 如果主线程结束了,
# 那么守护线程也会结束,即while循环也就自动停止
# 透明是看不见的东西
t1.start()
t2 = Thread(target=output, args=('pong',),)
t2.start()
if __name__ == '__main__':
main()
实例:输出数字
from threading import Thread
list1 = []
class My_process(Thread):
def __init__(self, string, count):
super().__init__()
self._string = string
self._count = count
def run(self):
global list1
for _ in range(self._count):
list1.append(self._string)
print(list1)
def main():
a1 = My_process('A', 100)
a2 = My_process('B', 100)
a3 = My_process('C', 100)
a4 = My_process('D', 100)
a5 = My_process('E', 100)
a1.start()
a2.start()
a3.start()
a4.start()
a5.start()
if __name__ == '__main__':
main()