如何让线程继续循环

时间:2016-08-18 09:33:15

标签: multithreading python-3.x cycle continue

我在python 3中创建了一个简单的脚本,它输入了一些文件夹(全部叫做" recup_dir.x",x保留1到777之间的数字)并搜索包含" firefox&的文件#34;字。由于文件太多而且过程需要很长时间,所以我决定实现多线程。这是代码:

import os, threading

def loop():
    for x in range(800):
        inizialize().start()

class inizialize(threading.Thread):

    def run(self):
        self.program()

    def program(self):
        n = list(range(778))
        n.pop(0)
        for z in n:
            Path = ("/home/user/Desktop/files/recup_dir.%s/" % (z))
            filelist = os.listdir(Path)
            print (Path)
            for x in filelist:
                try:
                    with open(Path + x, "r", encoding="ascii") as y:
                        for line in y:
                            if "firefox" in line:
                                print ("Found in %s !" % (x))
                                exit (1)
                except:
                    pass

loop()

问题是线程(800)始终执行相同的操作,并且它们永远不会传递到下一个文件夹。他们总是留在第一个(recup_dir.1)。

如何让线程继续在其他文件夹中搜索?

1 个答案:

答案 0 :(得分:1)

您不在线程中分发工作。 尝试传递每个应该执行任务的线程

以下是您的示例 - 已更改:

WITH XMLNAMESPACES (DEFAULT 'http://example.com', 'http://example.com/data-metadata' as dmd)
INSERT INTO myxml (id,name,company,lastday)
SELECT 
    e.value('@id',          'INT' ),
    e.value('Name[1]',      'VARCHAR(100)' ),
    c.value('@dmd:name',    'VARCHAR(100)' ),
    e.value('let $x:=LastDay[1] return $x cast as xs:date?','DATE' )
FROM @xml.nodes('/Data/Company') AS A(c) 
CROSS APPLY c.nodes('Employee') AS B(e)