python 串行执行和并行执行实例


Posted in Python onApril 30, 2020

我就废话不多说了,大家还是直接看代码吧!

#coding=utf-8
 
import threading
 
import time
 
import cx_Oracle
 
from pprint import pprint
 
import csv
 
print time.asctime()
 
table_name = "dbtest.csv"
 
f = open(table_name + ".csv", "w")
 
conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
cursor = conn.cursor()
 
def query01():
 
  tname = threading.current_thread()
 
  aa=10
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query02():
 
  tname = threading.current_thread()
 
  aa=20
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query03():
 
  tname = threading.current_thread()
 
  aa=30
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query04():
 
  tname = threading.current_thread()
 
  aa=40
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
def query05():
 
  tname = threading.current_thread()
 
  aa=50
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query06():
 
  tname = threading.current_thread()
 
  aa=60
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query07():
 
  tname = threading.current_thread()
 
  aa=70
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  return row
 
  cursor.close()
 
def query08():
 
  tname = threading.current_thread()
 
  aa=80
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query09():
 
  tname = threading.current_thread()
 
  aa=90
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
def query10():
 
  tname = threading.current_thread()
 
  aa=100
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close() 
 
 
threads = []
 
t1 = threading.Thread(target=query01, name='query01')
 
threads.append(t1)
 
t2 = threading.Thread(target=query02, name='query02')
 
threads.append(t2)
 
t2 = threading.Thread(target=query03, name='query03')
 
threads.append(t2)
 
t2 = threading.Thread(target=query04, name='query04')
 
threads.append(t2)
 
t2 = threading.Thread(target=query05, name='query05')
 
threads.append(t2)
 
t2 = threading.Thread(target=query06, name='query06')
 
threads.append(t2)
 
t2 = threading.Thread(target=query07, name='query07')
 
threads.append(t2)
 
t2 = threading.Thread(target=query08, name='query08')
 
threads.append(t2)
 
t2 = threading.Thread(target=query09, name='query09')
 
threads.append(t2)
 
t2 = threading.Thread(target=query10, name='query10')
 
threads.append(t2) 
 
if __name__ == '__main__':
 
  for t in threads:
 
    # t.setDaemon(True)
 
    t.start()
 
    # t.run()
 
    # t.start()
 
    # print '3333333'
 
    print threading.current_thread()
 
    # print t.is_alive()
 
    # print '3333333'
 
    t.join()
 
  print "all over "
 
  print time.asctime() 
 
 
C:\Python27\python.exe C:/Users/tlcb/PycharmProjects/untitled/a2.py
 
Wed Mar 28 11:08:19 2018
 
<_MainThread(MainThread, started 18744)>
 
[(10, '10boobook10', '10aaaaaaaaaaaa10', '10bbbbbbbbbbbbbbbbb10'), (10, '10sssssssss10', 'tlcb', 'tlcb'), (10, '10boobook10', '10aaaaaaaaaaaa10', '10bbbbbbbbbbbbbbbbb10')]
 
<_MainThread(MainThread, started 18744)>
 
[(20, '20boobook20', '20aaaaaaaaaaaa20', '20bbbbbbbbbbbbbbbbb20'), (20, '20boobook20', '20aaaaaaaaaaaa20', '20bbbbbbbbbbbbbbbbb20'), (20, '20boobook20', '20aaaaaaaaaaaa20', '20bbbbbbbbbbbbbbbbb20')]
 
<_MainThread(MainThread, started 18744)>
 
[(30, '30boobook30', '30aaaaaaaaaaaa30', '30bbbbbbbbbbbbbbbbb30'), (30, '30boobook30', '30aaaaaaaaaaaa30', '30bbbbbbbbbbbbbbbbb30'), (30, '30boobook30', '30aaaaaaaaaaaa30', '30bbbbbbbbbbbbbbbbb30')]
 
<_MainThread(MainThread, started 18744)>
 
[(40, '40boobook40', '40aaaaaaaaaaaa40', '40bbbbbbbbbbbbbbbbb40'), (40, '40boobook40', '40aaaaaaaaaaaa40', '40bbbbbbbbbbbbbbbbb40'), (40, '40boobook40', '40aaaaaaaaaaaa40', '40bbbbbbbbbbbbbbbbb40')]
 
<_MainThread(MainThread, started 18744)>
 
[(50, '50boobook50', '50aaaaaaaaaaaa50', '50bbbbbbbbbbbbbbbbb50'), (50, '50boobook50', '50aaaaaaaaaaaa50', '50bbbbbbbbbbbbbbbbb50'), (50, '50boobook50', '50aaaaaaaaaaaa50', '50bbbbbbbbbbbbbbbbb50')]
 
<_MainThread(MainThread, started 18744)>
 
[(60, '60boobook60', '60aaaaaaaaaaaa60', '60bbbbbbbbbbbbbbbbb60'), (60, '60boobook60', '60aaaaaaaaaaaa60', '60bbbbbbbbbbbbbbbbb60'), (60, '60boobook60', '60aaaaaaaaaaaa60', '60bbbbbbbbbbbbbbbbb60')]
 
<_MainThread(MainThread, started 18744)>
 
<_MainThread(MainThread, started 18744)>
 
[(80, '80boobook80', '80aaaaaaaaaaaa80', '80bbbbbbbbbbbbbbbbb80'), (80, '80boobook80', '80aaaaaaaaaaaa80', '80bbbbbbbbbbbbbbbbb80'), (80, '80boobook80', '80aaaaaaaaaaaa80', '80bbbbbbbbbbbbbbbbb80')]
 
<_MainThread(MainThread, started 18744)>
 
[(90, '90boobook90', '90aaaaaaaaaaaa90', '90bbbbbbbbbbbbbbbbb90'), (90, '90boobook90', '90aaaaaaaaaaaa90', '90bbbbbbbbbbbbbbbbb90'), (90, '90boobook90', '90aaaaaaaaaaaa90', '90bbbbbbbbbbbbbbbbb90')]
 
<_MainThread(MainThread, started 18744)>
 
[(100, '100boobook100', '100aaaaaaaaaaaa100', '100bbbbbbbbbbbbbbbbb100'), (100, '100boobook100', '100aaaaaaaaaaaa100', '100bbbbbbbbbbbbbbbbb100'), (100, '100boobook100', '100aaaaaaaaaaaa100', '100bbbbbbbbbbbbbbbbb100')]
 
all over 
 
Wed Mar 28 11:08:34 2018 
 
Process finished with exit code 0 
 
 
这个时候是串行 花费了15秒 
 
 
多线程跑:
 
#coding=utf-8
 
import threading
 
import time
 
import cx_Oracle
 
from pprint import pprint
 
import csv
 
print time.asctime()
 
table_name = "dbtest.csv"
 
f = open(table_name + ".csv", "w") 
 
 
def query01():
 
  tname = threading.current_thread()
 
  aa=10
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query02():
 
  tname = threading.current_thread()
 
  aa=20
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query03():
 
  tname = threading.current_thread()
 
  aa=30
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query04():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=40
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query05():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=50
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query06():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=60
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query07():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=70
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query08():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=80
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query09():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=90
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close()
 
def query10():
 
  conn = cx_Oracle.connect('tlcbuser/tlcbuser@20.5.101.31/tlyy')
 
  cursor = conn.cursor()
 
  tname = threading.current_thread()
 
  aa=100
 
  # cursor.execute("SELECT * FROM TEST100 WHERE ID = %s", [aa])
 
  cursor.prepare("""SELECT * FROM TEST100 WHERE ID=:id""")
 
  cursor.execute(None,{'id':aa})
 
  row = cursor.fetchall()
 
  print row
 
  return row
 
  cursor.close()
 
  conn.close() 
 
 
threads = []
 
t1 = threading.Thread(target=query01, name='query01')
 
threads.append(t1)
 
t2 = threading.Thread(target=query02, name='query02')
 
threads.append(t2)
 
t2 = threading.Thread(target=query03, name='query03')
 
threads.append(t2)
 
t2 = threading.Thread(target=query04, name='query04')
 
threads.append(t2)
 
t2 = threading.Thread(target=query05, name='query05')
 
threads.append(t2)
 
t2 = threading.Thread(target=query06, name='query06')
 
threads.append(t2)
 
t2 = threading.Thread(target=query07, name='query07')
 
threads.append(t2)
 
t2 = threading.Thread(target=query08, name='query08')
 
threads.append(t2)
 
t2 = threading.Thread(target=query09, name='query09')
 
threads.append(t2)
 
t2 = threading.Thread(target=query10, name='query10')
 
threads.append(t2) 
 
 
if __name__ == '__main__':
 
  for t in threads:
 
    # t.setDaemon(True)
 
    t.start()
 
    # t.run()
 
    # t.start()
 
    # print '3333333'
 
    print threading.current_thread()
 
    # print t.is_alive()
 
    # print '3333333'
 
  t.join()
 
  print "all over "
 
  print time.asctime() 
 
 
C:\Python27\python.exe C:/Users/tlcb/PycharmProjects/untitled/a2.py
 
Wed Mar 28 11:12:47 2018
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
<_MainThread(MainThread, started 22500)>
 
[(40, '40boobook40', '40aaaaaaaaaaaa40', '40bbbbbbbbbbbbbbbbb40'), (40, '40boobook40', '40aaaaaaaaaaaa40', '40bbbbbbbbbbbbbbbbb40'), (40, '40boobook40', '40aaaaaaaaaaaa40', '40bbbbbbbbbbbbbbbbb40')]
 
[(60, '60boobook60', '60aaaaaaaaaaaa60', '60bbbbbbbbbbbbbbbbb60'), (60, '60boobook60', '60aaaaaaaaaaaa60', '60bbbbbbbbbbbbbbbbb60'), (60, '60boobook60', '60aaaaaaaaaaaa60', '60bbbbbbbbbbbbbbbbb60')]
 
[(80, '80boobook80', '80aaaaaaaaaaaa80', '80bbbbbbbbbbbbbbbbb80'), (80, '80boobook80', '80aaaaaaaaaaaa80', '80bbbbbbbbbbbbbbbbb80'), (80, '80boobook80', '80aaaaaaaaaaaa80', '80bbbbbbbbbbbbbbbbb80')]
 
[(50, '50boobook50', '50aaaaaaaaaaaa50', '50bbbbbbbbbbbbbbbbb50'), (50, '50boobook50', '50aaaaaaaaaaaa50', '50bbbbbbbbbbbbbbbbb50'), (50, '50boobook50', '50aaaaaaaaaaaa50', '50bbbbbbbbbbbbbbbbb50')]
 
[(10, '10boobook10', '10aaaaaaaaaaaa10', '10bbbbbbbbbbbbbbbbb10'), (10, '10sssssssss10', 'tlcb', 'tlcb'), (10, '10boobook10', '10aaaaaaaaaaaa10', '10bbbbbbbbbbbbbbbbb10')]
 
[(20, '20boobook20', '20aaaaaaaaaaaa20', '20bbbbbbbbbbbbbbbbb20'), (20, '20boobook20', '20aaaaaaaaaaaa20', '20bbbbbbbbbbbbbbbbb20'), (20, '20boobook20', '20aaaaaaaaaaaa20', '20bbbbbbbbbbbbbbbbb20')]
 
[(30, '30boobook30', '30aaaaaaaaaaaa30', '30bbbbbbbbbbbbbbbbb30'), (30, '30boobook30', '30aaaaaaaaaaaa30', '30bbbbbbbbbbbbbbbbb30'), (30, '30boobook30', '30aaaaaaaaaaaa30', '30bbbbbbbbbbbbbbbbb30')]
 
[(100, '100boobook100', '100aaaaaaaaaaaa100', '100bbbbbbbbbbbbbbbbb100'), (100, '100boobook100', '100aaaaaaaaaaaa100', '100bbbbbbbbbbbbbbbbb100'), (100, '100boobook100', '100aaaaaaaaaaaa100', '100bbbbbbbbbbbbbbbbb100')]
 
[(90, '90boobook90', '90aaaaaaaaaaaa90', '90bbbbbbbbbbbbbbbbb90'), (90, '90boobook90', '90aaaaaaaaaaaa90', '90bbbbbbbbbbbbbbbbb90'), (90, '90boobook90', '90aaaaaaaaaaaa90', '90bbbbbbbbbbbbbbbbb90')]
 
all over 
 
Wed Mar 28 11:12:55 2018 
 
Process finished with exit code 0 
 
此时花了 8秒

补充知识:python logging定制logstash的json日志格式

最近一直在折腾日志的收集,现在算是收尾了。 写一篇算python优化logstash的方案。

其实大家都知道logstash调用grok来解析日志的话,是要消耗cpu的成本的,毕竟是需要正则的匹配的。

根据logstash调优的方案,咱们可以预先生成json的格式。 我这边基本是python的程序,怎么搞尼 ?

有两种方法,第一种方法是生成json后,直接打入logstash的端口。 还有一种是生成json写入文件,让logstash做tail操作的时候,把一行的日志数据直接载入json就可以了。

python下的日志调试用得时logging,改成json也是很好改得。 另外不少老外已经考虑到这样的需求,已经做了python logstash的模块。

import logging
import logstash
import sys

host = 'localhost'

test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)
test_logger.addHandler(logstash.LogstashHandler(host, 5959, version=1))
# test_logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1))

test_logger.error('python-logstash: test logstash error message.')
test_logger.info('python-logstash: test logstash info message.')
test_logger.warning('python-logstash: test logstash warning message.')

# add extra field to logstash message
extra = {
  'test_string': 'python version: ' + repr(sys.version_info),
  'test_boolean': True,
  'test_dict': {'a': 1, 'b': 'c'},
  'test_float': 1.23,
  'test_integer': 123,
  'test_list': [1, 2, '3'],
}
test_logger.info('python-logstash: test extra fields', extra=extra)

python-logstash自带了amqp的方案

import logging
import logstash

# AMQP parameters
host = 'localhost'
username = 'guest'
password= 'guest'
exchange = 'logstash.py'

# get a logger and set logging level
test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)

# add the handler
test_logger.addHandler(logstash.AMQPLogstashHandler(version=1,
                          host=host,
                          durable=True,
                          username=username,
                          password=password,
                          exchange=exchange))

# log
test_logger.error('python-logstash: test logstash error message.')
test_logger.info('python-logstash: test logstash info message.')
test_logger.warning('python-logstash: test logstash warning message.')

try:
  1/0
except:
  test_logger.exception('python-logstash: test logstash exception with stack trace')

不管怎么说,最后生成的格式是这样就可以了。

{
  "@source"=>"unknown",
  "@type"=>"nginx",
  "@tags"=>[],
  "@fields"=>{
    "remote_addr"=>"192.168.0.1",
    "remote_user"=>"-",
    "body_bytes_sent"=>"13988",
    "request_time"=>"0.122",
    "status"=>"200",
    "request"=>"GET /some/url HTTP/1.1",
    "request_method"=>"GET",
    "http_referrer"=>"http://www.example.org/some/url",
    "http_user_agent"=>"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1"
  },
  "@timestamp"=>"2012-08-23T10:49:14+02:00"
}

我这里简单提一下,这个模块用的不是很满意,我在python下把日志打成了json字符串,我原本以为会像grok那样,在Es里面,我的这条日志是个字段的结构,而不是这个日志都在message里面…. 我想大家应该明白了我的意思,这样很是不容易在kibana的搜索…

在kibana搜索,我经常上 source:xxx AND level:INFO 结果正像上面描述的那样,整条日志,都在@message里面。

以上这篇python 串行执行和并行执行实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
python数组复制拷贝的实现方法
Jun 09 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
Python中的类与类型示例详解
Jul 10 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 Python
Django Channel实时推送与聊天的示例代码
Apr 30 #Python
Django ORM 查询表中某列字段值的方法
Apr 30 #Python
Python pip install如何修改默认下载路径
Apr 29 #Python
Django 5种类型Session使用方法解析
Apr 29 #Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 #Python
Python退出时强制运行一段代码的实现方法
Apr 29 #Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 #Python
You might like
php array_flip() 删除数组重复元素
2009/01/14 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
基于php-fpm的配置详解
2013/06/03 PHP
php获取淘宝分类id示例
2014/01/16 PHP
yii数据库的查询方法
2015/12/28 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
python将字典内容存入mysql实例代码
2018/01/18 Python
python如何实现int函数的方法示例
2018/02/19 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python制作填词游戏步骤详解
2019/05/05 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python实现横向拼接图片
2020/03/23 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
《我是什么》教学反思
2016/02/16 职场文书