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警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
Python处理JSON数据并生成条形图
Aug 05 Python
Python内置模块turtle绘图详解
Dec 09 Python
Selenium的使用详解
Oct 19 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
python中的测试框架
Nov 13 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 Python
Django实现聊天机器人
May 31 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设计模式之观察者模式的应用详解
2013/05/21 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
php实现分页显示
2015/11/03 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
JS实现多功能计算器
2020/10/28 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
python简单实例训练(21~30)
2017/11/15 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python程序文件扩展名知识点详解
2020/02/27 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
管理科学大学生求职信
2013/11/13 职场文书
一年级学生评语大全
2014/04/21 职场文书
销售岗位职责范本
2014/06/12 职场文书
2014教师年度工作总结
2014/11/10 职场文书
2015年校医个人工作总结
2015/07/24 职场文书