菁英科技(卓目鸟学苑)- 专注软件测试菁英教育
标题: python_武浩杰_20210125 [打印本页]
作者: 海底月是天上月 时间: 2021-1-25 20:21
标题: python_武浩杰_20210125
'''线程和进程
线程(thread)是操作系统能够进行运算调度的最小单位。
它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,
每条线程并行执行不同的任务一个进程里最少包括一个线程
执行调度的最小单元是线程,cpu调度的最小单元也是线程
'''
#进程
from multiprocessing import Process
import os
def run(name):
print('运行子进程%s(%s)'%(name,os.getpid()))
def run2(name):
print('运行子进程%s(%s)'%(name,os.getpid()))
if __name__== "__main__":
print('当前进程是%s'%os.getpid())
# run('test') 这行代码仍然在当前进程中执行
# 创建一个新的进程 target :指定的函数
p = Process(target = run,args = ('test',))
#开始执行新进程
print('开始执行子进程')
p.start()
# time.sleep(1)
# 将子进程加入到主进程当中
p.join()
print('子进程执行完毕') p2 = Process(target = run2,args =('test2',))
p2.start()
p2.join()from multiprocessing import Pool
import os,time,randomdef task(name):
print('运行任务%s(%s)'%(name,os.getpid()))
start = time.time()
time.sleep(random.randint(1,3))
end = time.time()
print('任务%s耗时为%.2f秒'%(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,timedef task(name):
print('线程%s正在运行。。。'%threading.current_thread().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)
''
多线程安全问题
GIL锁
python一次只允许一个线程,线程只能在同一台电脑上那个运行
python中多任务一般建议使用多进程来完成
在Python中多线程并不能真正的提高效率
进程可以在不同的电脑上运行---分布式
'''
import threading,time
#银行账户
balance = 0#创建一个锁
lock = threading.Lock()
def change(money):
global balance
#存钱
balance = balance + money
#取钱
balance = balance - money
# print(balance)
def run(money):
for i in range(100000):
#上锁
lock.acquire()
try:
change(money)
finally:
#释放锁
lock.release()
t1 = threading.Thread(target=run,args=(10,))
t2 = threading.Thread(target=run,args=(8,))
t1.start()
t2.start()
t1.join()
t2.join()
print('balance=%d'%balance)
# change(10)
# print(balance)
import mysql.connector
# 连接数据库
db = mysql.connector.connect(host='localhost',user='root',password='')
# 获取游标
cursor = db.cursor()
# 创建数据库
cursor.execute('CREATE DATABASE JY40')
'''
ACID
Atomic 原子性Consistence 一致性Isolation 隔离性Duration 持久性
'''
欢迎光临 菁英科技(卓目鸟学苑)- 专注软件测试菁英教育 (http://www.zmnxy.com/) |
Powered by Discuz! X3.4 |