我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

python_焦新瑞_20210125

[复制链接]
8487学员认证 发表于 2021-1-25 20:15:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、进程
进程运行代码的容器
进程是相互独立的
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    持久性





回复

使用道具 举报

关注0

粉丝0

帖子26

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备2025058934号-2 )

版权所有 © 西安菁英教育科技有限公司 2023-2026