vim
简介
末行模式命令:
:w 保存
:wq 保存并退出
:x 保存并退出
:q! 不保存,强制退出
多进程
基础使用
import multiprocessing
import time
def coding():
for i in range(3):
print("crazy coding")
time.sleep(0.2)
def music():
for i in range(3):
print("happy music")
time.sleep(0.2)
if __name__ == '__main__':
coding_process = multiprocessing.Process(target=coding)
music_process = multiprocessing.Process(target=music)
coding_process.start()
music_process.start()
参数传递
args:以元祖的方式传递,单个参数记得添加逗号
kwargs:以字典形式传递
import multiprocessing
import time
def coding(num):
for i in range(num):
print("crazy coding")
time.sleep(0.2)
def music(count):
for i in range(count):
print("happy music")
time.sleep(0.2)
if __name__ == '__main__':
coding_process = multiprocessing.Process(target=coding, args=(3,))
music_process = multiprocessing.Process(target=music, kwargs={"count": 3})
coding_process.start()
music_process.start()
获取进程编号
依赖os模块
os.getpid():获取进程编号
os.getppid():获取父进程编号
# -*- coding:utf-8 -*-
import multiprocessing
import time
import os
def coding(num):
print("主进程 %d" % os.getppid())
print("子进程 %d" % os.getpid())
for i in range(num):
print("crazy coding")
time.sleep(0.2)
def music(count):
print("主进程 %d" % os.getppid())
print("子进程 %d" % os.getpid())
for i in range(count):
print("happy music")
time.sleep(0.2)
if __name__ == '__main__':
print("主进程 %d" % os.getpid())
coding_process = multiprocessing.Process(target=coding, args=(3,))
music_process = multiprocessing.Process(target=music, kwargs={"count": 3})
coding_process.start()
music_process.start()
进程之间不共享全局变量
import multiprocessing
import time
my_list = []
def write_data():
for i in range(3):
my_list.append(i)
print(f"write:{my_list}")
def read_data():
print(f"read:{my_list}")
if __name__ == '__main__':
write_pro = multiprocessing.Process(target=write_data)
read_pro = multiprocessing.Process(target=read_data)
write_pro.start()
time.sleep(1)
read_pro.start()
主进程与子进程关系
在下面的情况下,主进程结束子进程不会结束
import multiprocessing
import time
def work():
for i in range(10):
print("working...")
time.sleep(0.2)
if __name__ == '__main__':
work_pro = multiprocessing.Process(target=work)
work_pro.start()
time.sleep(1)
print("ending")
输出:
working...
working...
working...
working...
working...
ending
working...
working...
working...
working...
working...
主进程结束子进程立即结束的方法
import multiprocessing
import time
def work():
for i in range(10):
print("working...")
time.sleep(0.2)
if __name__ == '__main__':
work_pro = multiprocessing.Process(target=work)
#第一种 守护主进程
#work_pro.daemon = True
work_pro.start()
time.sleep(1)
#第二种 销毁子进程
work_pro.terminate()
print("ending")
多线程
基本使用
import threading
import time
def coding():
for i in range(3):
print("crazy coding")
time.sleep(0.2)
def music():
for i in range(3):
print("happy music")
time.sleep(0.2)
if __name__ == '__main__':
thread_code = threading.Thread(target=coding)
music_code = threading.Thread(target=music)
thread_code.start()
music_code.start()
线程传参
args:元祖形式传参
kwargs:字典形式传参
import threading
import time
def coding(num):
for i in range(num):
print("crazy coding")
time.sleep(0.2)
def music(count):
for i in range(count):
print("happy music")
time.sleep(0.2)
if __name__ == '__main__':
thread_code = threading.Thread(target=coding, args=(3,))
music_code = threading.Thread(target=music, kwargs={"count": 3})
thread_code.start()
music_code.start()
结束战斗!每天进步一点点