【发布时间】:2017-04-26 05:01:30
【问题描述】:
我正在尝试提高代码的性能,但不知道如何在其中实现多处理模块。
我使用的是 linux (CentOS 7.2) 和 python 2.7
我需要在并行环境中运行的代码:
def start_fetching(directory):
with open("test.txt", "a") as myfile:
try:
for dirpath, dirnames, filenames in os.walk(directory):
for current_file in filenames:
current_file = dirpath + "/" + current_file
myfile.write(current_file)
return 0
except:
return sys.exc_info()[0]
if __name__ == "__main__":
cwd = "/home/"
final_status = start_fetching(cwd)
exit(final_status)
我需要将所有文件的元数据(这里只显示文件名)保存在数据库中。这里我只是将文件名存储在文本文件中。
【问题讨论】:
-
每次在第二个
for循环中执行某项操作时,您只需创建一个新的Thread。和往常一样。 docs.python.org/2/library/threading.html#thread-objects -
this 可能会有所帮助!
-
尝试同时从多个线程追加到一个文件通常不是一个好主意。
-
@AndreyShipilov 谢谢,我会试试看是否有帮助。
-
您可以尝试找出它,因为它取决于您的系统配置。但是根据您的描述,您正在写入数据库。在这里,数据库几乎总是瓶颈(除非它在内存中)。您可以尝试并行化写入,但这并不意味着数据库可以扩展并处理争用。在“HPC 集群”上运行它并不一定意味着并行性应该总是更快。
标签: python python-2.7 nested-loops python-multiprocessing