【发布时间】:2018-06-02 17:05:10
【问题描述】:
我正在编写一个脚本,从表中获取 N 条记录,并通过多线程处理所述记录。
之前我只是在每个worker定义的SQL语句中使用了Order by RAND(),并希望不会有重复。
这种工作(重复数据删除稍后完成),但是,我想通过以下方式使我的脚本更高效:
1)查询表一次,提取N条记录,分配给一个列表
2) 将大列表拆分为约等大小的 Y 个列表,可以通过以下方式完成:
number_of_workers = 2
first_names = ['Steve', 'Jane', 'Sara', 'Mary','Jack']
def chunkify(lst,n):
return [lst[i::n] for i in xrange(n)]
list1 = chunkify(first_names, number_of_workers)
print list1
3) 在多线程中定义工作者函数时,将不同的子列表传递给每个工作者。注意 - 工作人员的数量(以及我想将查询结果拆分成的部分)在函数的开头定义。
但是,由于我对 Python 还很陌生,我不知道如何将每个子列表传递给单独的工作人员(或者它甚至可行吗?)
任何帮助、其他建议等将不胜感激!
多线程代码示例如下。我将如何使用
import threading
import random
def worker():
assign sublistN to worker N
print sublistN
threads = []
for i in range(number_of_workers):
print i
print ""
t = threading.Thread(target=worker)
threads.append(t)
t.start()
提前谢谢你!
【问题讨论】:
标签: python multithreading list