多个程序可以同时写入 STDOUT 吗?

2 python parallel-processing multithreading stdout multiprocessing

我目前正在使用 GNU Parallel 同时在多个大文件上运行 Python 脚本。我有一个主 Python 脚本,用于设置我需要处理的文件,然后调度 Parallel 在这些文件上运行相同的工作脚本。

当所有工作人员完成后,我需要将数据返回到主线程,而我目前只是写入文件并将它们拉回。工作人员是否有可能将其腌制内容转储到 STDOUT 上供主设备收集,或者两个工作人员是否有可能同时开始写入 STDOUT 并相互交错?

基本上,STDOUT 会阻塞直到另一个程序完成吗?

Mar*_*ers 5

在 shell 环境中,在后台启动各种作业(所有作业都写入 )stdout,很有可能交错该输出,因为 没有锁定stdout

然而,GNU Parallel 可以重定向stdout它启动的各种作业并防止这种交错。有几个命令行开关和各种选项。

默认情况下,输出分组:

--group
团体输出。每个作业的输出被分组在一起,并且仅在命令完成时打印。首先是 stderr(标准错误),然后是 stdout(标准输出)。这需要一些 CPU 时间。在极少数情况下,GNU 并行会占用大量 CPU 时间,并且如果可以接受不同命令的输出混合在一起,则禁用分组-u可以将 GNU 并行速度提高 10 倍。

--group是默认值。可以用 反转-u

但也可以使用其他选项,包括定向到文件。