菁英科技(卓目鸟学苑)- 专注软件测试菁英教育
标题: python_焦新瑞_20210125 [打印本页]
作者: 8487 时间: 2021-1-25 20:15
标题: python_焦新瑞_20210125
一、进程进程运行代码的容器
进程是相互独立的
cpu调度的最小单元是线程
from multiprocessing import Process
import os
os.getpid()进程id
def run(name):
print('运行子进程%s(%s)'%(name,os.getpid()))
def run2(name):
print('运行子进程2%s(%s)'%(name,os.getpid()))
if __name__ == "__main__":
print('当前进程是%s'%os.getpid())
run('test') #这行代码仍然在当前行程中执行
创建一个新的进程 target(希望指定的函数
p = Process(target = run,args=('test',))
p2 = Process(target = run2,args=('test2',))
print('开始执行子进程')
开始执行新进程
p.start()
p.join() #将子进程加入到主进程当中
p2.start()
p2.join()
print('子进程执行完毕')
二、进程池
from multiprocessing import Pool
import os,time,random
def task(name):
print('运行任务%s(%s)'%(name,os.getpid()))
start = time.time()
#随机休眠1-3 s
time.sleep(random.randint(1,3))
end = time.time()
print('任务%s耗时为%.2f s'%(name,end-start))
if __name__ == '__main__':
print('主进程%s'%os.getpid())
初始化进程池
pool = Pool(4)
for i in range(6):
将任务交给进程池去执行
pool.apply_async(task,args=('任务%d'%i,))
pool.close()
pool.join()
三、线程
线程是‘相对’独立的
import threading,time
def task(name):
print('线程%s正在云行。。。'%threading.current_thread().name)
print(name)
if __name__ == "__main__":
print('主线程是%s'%threading.current_thread().name)
task()
创建一个新线程
t = threading.Thread(target = task,args=('传入一个参数',))
t.start()
t.join()
print('主线程%s运行结束'%threading.current_thread().name)
四、多线程的安全问题
单核 是一个线程
python中多任务一般建议使用多进程来完成
因为在python中多线程并不能真正提高效率
进程可以造不同的电脑上运行-分布式
import threading,time
balance = 0
创建一个锁
lock = threading.Lock()
def change(money):
global balance
存钱
balance = balance + money
balance = balance - money
def run(money):
for i in range(1000000):
上锁
lock.acquire()
try:
change(money)
finally:
lock.release()
t1 = threading.Thread(target=run,args=(10,))
t2 = threading.Thread(target=run,args=(8,))
t1.start()
t1.join()
t2.start()
t2.join()
print('balance=%d'%balance)
五、连接数据库
import mysql.connector
连接数据库
db = mysql.connector.connect(host='localhost',user='root',password='123456',port='3309',database='py_mysql')
获取游标
cursor = db.cursor()
创建数据库
cursor.execute('CREATE DATABASE py_mysql')
创建表
cursor.execute(
'''
CREATE TABLE dep_info(
dep_id TINYINT(3) AUTO_INCREMENT NOT NULL PRIMARY KEY,
dep_name VARCHAR(20) NOT NULL
)
'''
)
cursor.execute(
'''
CREATE TABLE aa(
id INT,
name VARCHAR(20),
pwd VARCHAR(20)
)
'''
)
cursor.execute('''
INSERT INTO aa(id,NAME,pwd) VALUES(2,'ccc','2432dasd');
'''
)
提交数据
db.commit()
cursor.execute('''
INSERT INTO dep_info VALUES(1,'Develop'),(2,'Test')
'''
)
ACID
Atomic 原子性
Consistence 一致性
Isolation 隔离性
Duration 持久性
欢迎光临 菁英科技(卓目鸟学苑)- 专注软件测试菁英教育 (http://www.zmnxy.com/) |
Powered by Discuz! X3.4 |