python 多线程模型(主线程14个子线程)

这个Python脚本创建了14个线程,每个线程执行一个不同的Oracle查询并将其结果写入CSV文件。每个查询都是从'dual'表中选择一个特定的字符串标识符(例如exp01到exp14)。脚本使用cx_Oracle库连接到数据库,并通过CSV模块写入数据。运行脚本时,可以看到每个线程的名称,执行的SQL以及与远程数据库的TCP连接状态。
摘要由CSDN通过智能技术生成

#coding=utf-8
import threading
import time
import cx_Oracle
from pprint import pprint
import csv
table_name = "dbtest.csv"
f = open(table_name + ".csv", "w")

def exp01():
  conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
  cursor = conn.cursor()
  owner = "system"
  writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
  tname = threading.current_thread()
  print tname
  exportOracleSql = "select 'exp01' from dual"
  print exportOracleSql
  x = cursor.execute(exportOracleSql)
  time.sleep(11)
  cursor.close()
  conn.close()

def exp02():
  conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
  cursor = conn.cursor()
  owner = "system"
  writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
  tname = threading.current_thread()
  print tname
  exportOracleSql = "select 'exp02' from dual"
  print exportOracleSql
  x = cursor.execute(exportOracleSql)
  time.sleep(11)
  cursor.close()
  conn.close()


def exp03():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp03' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp04():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp04' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp05():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp05' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp06():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp06' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp07():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp07' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp08():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp08' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp09():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp09' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp10():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp10' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp11():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp11' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp12():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp12' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp13():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp13' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

def exp14():
    conn = cx_Oracle.connect('tlcbuser/xxxxxxxxx@2.2.2.2/tlyy')
    cursor = conn.cursor()
    owner = "system"
    writer = csv.writer(f, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    tname = threading.current_thread()
    print tname
    exportOracleSql = "select 'exp14' from dual"
    print exportOracleSql
    x = cursor.execute(exportOracleSql)
    time.sleep(11)
    cursor.close()
    conn.close()

threads = []
t1 = threading.Thread(target=exp01,name='exp01')
threads.append(t1)
t2 = threading.Thread(target=exp02,name='exp02')
threads.append(t2)
t2 = threading.Thread(target=exp03,name='exp03')
threads.append(t2)
t2 = threading.Thread(target=exp04,name='exp04')
threads.append(t2)
t2 = threading.Thread(target=exp05,name='exp05')
threads.append(t2)
t2 = threading.Thread(target=exp06,name='exp06')
threads.append(t2)
t2 = threading.Thread(target=exp07,name='exp07')
threads.append(t2)
t2 = threading.Thread(target=exp08,name='exp08')
threads.append(t2)
t2 = threading.Thread(target=exp09,name='exp09')
threads.append(t2)
t2 = threading.Thread(target=exp10,name='exp10')
threads.append(t2)
t2 = threading.Thread(target=exp11,name='exp11')
threads.append(t2)
t2 = threading.Thread(target=exp12,name='exp12')
threads.append(t2)
t2 = threading.Thread(target=exp13,name='exp13')
threads.append(t2)
t2 = threading.Thread(target=exp14,name='exp14')
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 "






[oswatch@yyjk ~]$ netstat -an | grep 2.2.2.2
tcp        0      0 1.1.1.1:41835           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41834           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41831           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41828           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41842           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41829           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41836           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41827           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41830           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41838           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41840           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41832           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41841           2.2.2.2:1521           ESTABLISHED
tcp        0      0 1.1.1.1:41839           2.2.2.2:1521           ESTABLISHED
[oswatch@yyjk ~]$


[root@yyjk ~/sbin/thread]#time python mtest.py
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<Thread(exp02, started 139957769598720)>
select 'exp02' from dual
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<Thread(exp01, started 139957780088576)>
select 'exp01' from dual
<_MainThread(MainThread, started 139957909833472)>
<Thread(exp03, started 139957638084352)>
select 'exp03' from dual
<_MainThread(MainThread, started 139957909833472)>
<Thread(exp04, started 139957627594496)>
select 'exp04' from dual
<_MainThread(MainThread, started 139957909833472)>
<_MainThread(MainThread, started 139957909833472)>
<Thread(exp06, started 139957404428032)>
select 'exp06' from dual
<Thread(exp05, started 139957414917888)>
select 'exp05' from dual
<Thread(exp07, started 139957393938176)>
select 'exp07' from dual
<Thread(exp09, started 139957372958464)>
select 'exp09' from dual
<Thread(exp08, started 139957383448320)>
select 'exp08' from dual
<Thread(exp10, started 139957362468608)>
select 'exp10' from dual
<Thread(exp11, started 139957012264704)>
select 'exp11' from dual
<Thread(exp12, started 139957001774848)>
select 'exp12' from dual
<Thread(exp13, started 139956991284992)>
select 'exp13' from dual
<Thread(exp14, started 139956980795136)>
select 'exp14' from dual
all over

real 0m11.299s
user 0m0.068s
sys 0m0.025s
You have mail in /var/spool/mail/root
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值