一、Python操作MySQL数据库
利用Python语言操作数据库,需要先下载pymysql,由于我之前下载了Anaconda并配置了系统变量,直接在命令行输出:
conda install pymysql
如果没有安装过Anaconda,可通过以下命令行安装:
pip install pymysql
安装完毕后,通过以下代码访问并操作数据库MySQL。
import pymysql
# user为数据库用户名,password为登录密码,db为目标数据库名
conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",db="easyvideo")
cs = conn.cursor()
cs.execute("select * from admin")
for i in cs:
print("当前是第" + str(cs.rownumber) + "行")
print("id:" + i[0]) #输出数据库表中对应该行的id
print("username:" + i[1]) #输出数据库表中对应该行的username
二、Python多进程
创建进程的multiprocessing.Process类
我们来看看这个类的原型:
class multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={})
参数说明:
- target:表示调用对象,一般为函数,也可以为类。
- args:表示调用对象的置参数元组。
- kwargs:表示调用对象的字典。
- name:为进程的别名。
- group:参数不使用,可忽略。
类提供的常用方法:
- is_alive():返回进程是否是激活的。
- join([timeout]) :可以等待子进程结束后再继续往下运行,通常用于进程间的同步。进一步地解释,哪个子进程调用了join方法,主进程就要等该子进程执行完后才能继续向下执行。
- run() :代表进程执行的任务函数,可被重写。
- start() :激活进程。
- terminate():终止进程。
属性:
- authkey:字节码,进程的谁密钥.
- daemon:父进程终止后自动终止而不会等待子进程,且自己不能产生新进程,必须在start()之前设置。
- exitcode:退出码,进程在运行时为None,如果为–N,表示被信号N结束。
- name:获取进程名称.
- pid:进程id。
multiprocessing模块提供了一个创建进程的Process类,其创建进程有两种方法:
- 创建一个Process类的实例,并指定目标任务函数。
- 自定义一个类,并继承Process类,重写其init ()方法和run ()方法。
首先我们使用第一种方法创建两个进程,并与单进程运行的时间做比较:
import multiprocessing
import os
import time
#子进程执行的代码
def child_process(num):
result = 0
for i in range(num * 10000000):
result += i
print("进程为:{0:d}".format(os.getpid()))
if __name__ == '__main__':
print("父进程为:{0:d}".format(os.getpid()))
t0 = time.time()
child_process(5)
child_process(5)
t1 = time.time()
print("顺序执行耗时:{0:.2f}".format(t1 - t0))
p1 = multiprocessing.Process(target=child_process,args=(5,))
p2 = multiprocessing.Process(target=child_process,args=(5,))
t2 = time.time()
p1.start()
p2.start()
p1.join()
p2.join()
t3 = time.time()
print("多