我是该领域的新手,我正在尝试提出一个可以完成以下任务的功能:
我看过类似下面的内容。使用导入更新了代码,并删除了Queue的用法。而是直接将数据块传递给打印功能。
--------------------------------------------------------------
from __future__ import print_function
import cx_Oracle
import csv
import time
import datetime
from multiprocessing import Pool
from multiprocessing import Queue
def PrintRows(rows):
rows=q.get()
if not rows:
return -1;
csvf = open('sales_history.csv', 'a')
csv_writer = csv.writer(csvf,delimiter='|')
print ("In PrintRows function : ")
csv_writer.writerows(rows)
csvf.close()
return 0
def TheMainQuery():
conn = pool.acquire()
cursor = conn.cursor()
cursor.arraysize = 80000
cursor.execute("""
select *
from
sales_history
""")
rows = cursor.fetchmany()
while rows:
if not rows:
break;
q.put(rows)
print("launching async proc")
with Pool(processes=2) as ppool:
result = ppool.apply_async(PrintRows,(rows,))
print("Done launching async process")
rows = cursor.fetchmany()
TheMainQuery()
elapsed_time = time.time() - start_time
print("All done!\n")
return
---------------------------------------------------------
问题:根本没有将数据写入文件。如果该功能根本没有执行。我的目标是使假脱机任务异步执行。 任何提示/示例都将受到高度赞赏。
非常感谢!!