python - 多处理未在 Python 中并行执行
问题描述
我已经编辑了代码,目前它工作正常。但认为它不是并行或动态执行。任何人都可以检查一下吗
代码 :
def folderStatistic(t):
j, dir_name = t
row = []
for content in dir_name.split(","):
row.append(content)
print(row)
def get_directories():
import csv
with open('CONFIG.csv', 'r') as file:
reader = csv.reader(file,delimiter = '\t')
return [col for row in reader for col in row]
def folderstatsMain():
freeze_support()
start = time.time()
pool = Pool()
worker = partial(folderStatistic)
pool.map(worker, enumerate(get_directories()))
def datatobechecked():
try:
folderstatsMain()
except Exception as e:
# pass
print(e)
if __name__ == '__main__':
datatobechecked()
配置文件
C:\USERS, .CSV
C:\WINDOWS , .PDF
etc.
config.csv 中可能有大约 200 个文件夹路径
解决方案
欢迎来到 StackOverflow 和 Python 编程世界!
继续这个问题。在get_directories()
函数内部,您在with
上下文中打开文件,获取reader
对象并在您离开上下文后立即关闭文件,因此当需要使用读取器对象时,文件已经关闭。
我不想让您气馁,但如果您对编程非常陌生,请不要深入研究并行编程。随着您添加的每个线程,同时处理多个线程的难度呈指数增长(尽管池大大简化了此过程)。进程更糟糕,因为它们不共享内存并且不能轻松地相互通信。
我的建议是,首先尝试将其编写为单线程程序。如果您让它工作并且仍然需要并行化它,请使用输入文件路径作为参数隔离单个函数来完成所有工作,然后在该函数上使用线程/进程池。
编辑:根据我从您的代码中可以理解的内容,您从 CSV 文件中获取目录名称,然后为您运行的文件中的每个“单元格” parallel folderStatistics
。这部分似乎是正确的。问题可能在于dir_name.split(",")
,请注意您将单个“单元格”传递给folderStatistics
非行。是什么让您认为它没有并行运行?
推荐阅读
- javascript - 使用新 URL 对象创建新请求
- reactjs - 为什么 this.state 在这种情况下不可用?
- python - 分隔线的最小和最大长度
- bash - Windows 上 Git 路径的位置
- javascript - React Native Animated - 卡片不会翻转
- java - 默认电话应用程序意图操作拨号未打开活动
- gradle - Kotlin 项目的 SonarQube 报告中的 0% 覆盖率
- java - java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger 更新 log4j 1.2.17 到 2.13.0 后
- excel - Excel VBA 运行时错误“424”对象需要用四舍五入的当前值替换单元格内容
- build - 如何在构建步骤编译架构?