Python操作MySQL与Python多进程

本文介绍了如何使用Python操作MySQL数据库,并深入探讨了Python的多进程编程,包括Process类的使用、进程同步(Semaphore、Lock、Event)、进程池Pool、以及Queue和Pipe的数据交换。通过实例展示了并发执行任务的优势和不同同步机制的应用。
摘要由CSDN通过智能技术生成

一、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类,其创建进程有两种方法

  1. 创建一个Process类的实例,并指定目标任务函数。
  2. 自定义一个类,并继承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("多
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值