import pymysql
import traceback
from multiprocessing import Pool,Manager,cpu_count
from multiprocessing.managers import BaseManager
import os,sys,time
import random # 建库建表
def createTable():
conn=pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='',
)
cur=conn.cursor()
sql_database='create database if not exists py3_userinfo default charset utf8 collate utf8_general_ci;'
sql_table='''
create table student(
id int not null auto_increment,
name varchar(20) not null,
age int default 0,
tel varchar(13) unique not null,
primary key(id)
)engine=innodb character set utf8;
'''
try:
# 建库
cur.execute(sql_database)
conn.select_db('py3_userinfo')
cur.execute('drop table if exists student;')
# 建表
cur.execute(sql_table)
except Exception as e:
print(e)
else:
print('数据库及表创建成功!')
cur.close()
conn.close() class MyMysql(object):
def __init__(self):
# 数据库连接
self.conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='',
db='py3_userinfo',
charset='utf8'
)
# 游标
self.cur = self.conn.cursor() def executeSql(self,sql):
try:
res=self.cur.execute(sql)
print('执行sql受影响的行数:',res)
self.conn.commit()
except:
traceback.print_exc() def quit(self):
self.cur.close()
self.conn.commit()
self.conn.close() class MyManager(BaseManager):
pass def my_Manager():
m=MyManager()
m.start()
return m # 把myMysql类注册到MyManager管理类中
MyManager.register('MyMysql',MyMysql) def run(my_sql):
print('subprocess is ',os.getpid())
# 造数据
name = 'ha'+str(random.randint(1,100))+'_'+str(os.getpid())
age = random.randint(1,100)
# emil=name+'@qq.com'
tel=''+str(random.choice([3,5,7,8]))+str(random.random())[2:11]
sql="insert into student(name,age,tel) values('%s','%s','%s')"%(name,age,tel)
my_sql.executeSql(sql) if __name__ == '__main__':
createTable() manager=my_Manager()
my_sql=manager.MyMysql() print('Parent process ',os.getpid())
p=Pool(cpu_count())
n=10
for i in range(n):
p.apply(run,args=(my_sql,))
p.close()
p.join()
print('all subprocess done!')
my_sql.quit()

python多进程并发插入mysql数据的更多相关文章

  1. python插入mysql数据(2)

    python插入mysql数据(2) """插入操作""" import pymysql import datetime from pymy ...

  2. Python多进程并发(multiprocessing)用法实例详解

    http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...

  3. python多进程并发和多线程并发和协程

    为什么需要并发编程? 如果程序中包含I/O操作,程序会有很高的延迟,CPU会处于等待状态,这样会浪费系统资源,浪费时间 1.Python的并发编程分为多进程并发和多线程并发 多进程并发:运行多个独立的 ...

  4. python 多进程并发与多线程并发

    本文对python支持的几种并发方式进行简单的总结. Python支持的并发分为多线程并发与多进程并发(异步IO本文不涉及).概念上来说,多进程并发即运行多个独立的程序,优势在于并发处理的任务都由操作 ...

  5. python 基础 9.3 mysql 数据操作

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/21 0:20 #@Auther :liuzhenchuan #@File   :mysql 数据操作 ...

  6. Python多进程并发操作进程池Pool

    目录: multiprocessing模块 Pool类 apply apply_async map close terminate join 进程实例 multiprocessing模块 如果你打算编 ...

  7. python多进程并发redis

    Redis支持两种持久化方式RDB和AOF,RDB持久化能够快速的储存和回复数据,但在服务器停机时会丢失大量数据,AOF持久化能够高效的提高数据的安全性,但在储存和恢复数据方面要耗费大量的时间,最好的 ...

  8. [转]Python多进程并发操作中进程池Pool的应用

    Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...

  9. Python多进程并发操作中进程池Pool的应用

    Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...

随机推荐

  1. java里的数组和list分别在什么情况下使用?

    数组长度固定,List未限定长度,且支持的功能更多,最常用的ArrayList底层实际上也是使用数组实现. 不需要复杂功能和确定长度的情况下,使用数组效率更高,通常情况建议使用List.

  2. 函数式接口, Collection等

    Lambda 函数式接口 lambda 表达式的使用需要借助于 函数式接口, 也就是说只有函数式接口才可以将其用 lambda 表达式进行简化. 函数式接口定义为仅含有一个抽象方法的接口. 按照这个定 ...

  3. Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流

    Windows10环境下 Nginx+ffmpeg自搭服务器制作RTMP直播流学习笔记 所需条件: nginx-rtmp-module(带rtmp模块) ,链接:https://link.jiansh ...

  4. hive时间戳转换&UDF更新

    from_unixtime 时间戳转换,如果带毫秒数的,除以1000. # ) ,'yyyy/MM/dd HH:mm:ss') as dt; reload function 今天碰到udf发布后,有时 ...

  5. [转]c++多线程编程之pthread线程深入理解

    多线程编程之pthread线程深入理解         Pthread是 POSIX threads 的简称,是POSIX的线程标准.           前几篇博客已经能给你初步的多线程概念.在进一 ...

  6. App installation failed (A valid provisioning profile for this executable was not found)

    真机调试build success ,App installation failed (A valid provisioning profile for this executable was not ...

  7. Mysql查询的执行顺序

    顺序: FROM JOIN ON WHERE GROUP BY (从此处开始可以使用select中指定的别名) AVG.SUM.MAX HAVING SELECT DISTINCT ORDER BY ...

  8. oracle 中decode的用法

    select decode(gg1.group_goods_amount, , , gg1.group_goods_amount) ; 这句话的意思是:如果group_goods_amount为0 则 ...

  9. BUG处理流程图

    流程描述: 1. 测试人员发现bug提交给开发. 2. 开发人员判断是否是bug. 3. 如果是bug,进行修改,修改完成后更改bug状态为已解决. 4. 如果不是bug,退回给测试人员并描述退回原因 ...

  10. oracle导入及导出dmp文件

    导出数据库步骤: exp 用户名/密码@实例名 file=导出的dmp文件存放路径(绝对路径) log=导出日志存放路径(建议记录log文件,方便后续核实数据是否完整导出和导入) 导入数据库步骤: 1 ...