'''线程和进程 线程(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 持久性 ''' |