我有大约4个输入文本文件,我想读取它们并将它们全部写入一个单独的文件中。
我使用两个线程,因此它运行得更快!
这是我在python中的问题和代码:
1 - 每个线程都有自己的变量版本,例如" lines"在函数内部" writeInFile"?
2 - 因为我从Tutorialspoint复制了代码的某些部分,所以我不明白什么是"而1:pass"在最后一行。你可以解释吗?链接到主要代码:http://www.tutorialspoint.com/python/python_multithreading.htm
3 - 我为线程延迟了什么?
4 - 如果我有大约400个输入文本文件,并希望在将它们全部写入单独的文件之前对它们进行一些操作,我可以使用多少个线程?
5-如果假设我使用10个线程,最好将输入放在不同的文件夹中(10个文件夹,每个文件夹有40个输入文本文件),并且每个线程调用一个文件夹或者我使用我在下面的代码中已经完成的操作如果其他线程之前没有读过它们,请让每个线程读取400个输入文本文件中的一个?
processedFiles=[] # this list to check which file in the folder has already been read by one thread so the other thread don't read it
#Function run by the threads
def writeInFile( threadName, delay):
for file in glob.glob("*.txt"):
if file not in processedFiles:
processedFiles.append(file)
f = open(file,"r")
lines = f.readlines()
f.close()
time.sleep(delay)
#open the file to write in
f = open('myfile','a')
f.write("%s \n" %lines)
f.close()
print "%s: %s" % ( threadName, time.ctime(time.time()) )
# Create two threads as follows
try:
f = open('myfile', 'r+')
f.truncate()
start = timeit.default_timer()
thread.start_new_thread( writeInFile, ("Thread-1", 0, ) )
thread.start_new_thread( writeInFile, ("Thread-2", 0, ) )
stop = timeit.default_timer()
print stop - start
except:
print "Error: unable to start thread"
while 1:
pass

答案 0 :(得分:0)
join
而不是while循环。见what is the use of join() in python threading。 一般思考:虽然它是一种更高级的架构,但您可能希望尝试在生产环境http://www.celeryproject.org/中学习/使用芹菜来完成这些类型的任务。