我在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)。
如何让线程继续在其他文件夹中搜索?
答案 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)