2 python parallel-processing multithreading stdout multiprocessing
我目前正在使用 GNU Parallel 同时在多个大文件上运行 Python 脚本。我有一个主 Python 脚本,用于设置我需要处理的文件,然后调度 Parallel 在这些文件上运行相同的工作脚本。
当所有工作人员完成后,我需要将数据返回到主线程,而我目前只是写入文件并将它们拉回。工作人员是否有可能将其腌制内容转储到 STDOUT 上供主设备收集,或者两个工作人员是否有可能同时开始写入 STDOUT 并相互交错?
基本上,STDOUT 会阻塞直到另一个程序完成吗?
在 shell 环境中,在后台启动各种作业(所有作业都写入 )stdout,很有可能交错该输出,因为 没有锁定stdout。
然而,GNU Parallel 可以重定向stdout它启动的各种作业并防止这种交错。有几个命令行开关和各种选项。
默认情况下,输出分组:
--group
团体输出。每个作业的输出被分组在一起,并且仅在命令完成时打印。首先是 stderr(标准错误),然后是 stdout(标准输出)。这需要一些 CPU 时间。在极少数情况下,GNU 并行会占用大量 CPU 时间,并且如果可以接受不同命令的输出混合在一起,则禁用分组-u可以将 GNU 并行速度提高 10 倍。
--group是默认值。可以用 反转-u。
但也可以使用其他选项,包括定向到文件。