读取文件并执行某些操作,多线程

时间:2013-07-18 23:06:38

标签: python multithreading

这个来源只是一个例子:

inputf = open('input', 'r')
outputf = open('output', 'a')

for x in inputf:
    x = x.strip('\n')
    result = urllib2.urlopen('http://test.com/'+x).getcode()
    outputf.write(x+' - '+result+'\n')

我想为此添加线程以同时检查几个网址。 用户应该每次决定他想要使用多少线程。 输出的顺序并不重要。

最好和最美好的方式是什么?

1 个答案:

答案 0 :(得分:4)

我喜欢multiprocessing.pool.ThreadPool(或multiprocessing.pool.Pool

像:

from multiprocessing.pool import ThreadPool

n_threads = 5
pool = ThreadPool(processes=n_threads)

threads = [pool.apply_async(some_function, args=(arg1,)) for arg1 in args]

pool.close()
pool.join()

results = [result.get() for result in threads]