多个程序可以同时写入STDOUT吗?
Can multiple programs write to STDOUT at the same time?
我目前正在使用 GNU Parallel to 运行 Python 脚本同时处理多个大文件。我有一个主 Python 脚本,它设置我需要处理的文件,然后将并行分派到 运行 这些文件上的相同工作脚本。
我需要在所有工作线程完成后将数据返回到主线程中,而我目前只是写入文件并将它们拉回。 worker 是否可以将他们腌制的内容转储到 STDOUT 上供 master 收集,或者是否有可能两个 worker 可以同时开始写入 STDOUT 并相互交错?
基本上,STDOUT 会阻塞直到另一个程序完成吗?
在 shell 环境中,在后台启动各种作业,全部写入 [=10=],很有可能交错输出,因为 stdout
没有锁定.
但是,GNU Parallel 可以重定向 stdout
它启动的各种作业并防止这种交错。有几个 commmand line switches 和各种选项。
默认情况下输出分组:
--group
Group output. Output from each jobs is grouped together and is only printed when the command is finished. stderr (standard error) first followed by stdout (standard output). This takes some CPU time. In rare situations GNU parallel takes up lots of CPU time and if it is acceptable that the outputs from different commands are mixed together, then disabling grouping with -u
can speedup GNU parallel by a factor of 10.
--group
is the default. Can be reversed with -u
.
但是可以使用其他选项,包括定向到文件。
我目前正在使用 GNU Parallel to 运行 Python 脚本同时处理多个大文件。我有一个主 Python 脚本,它设置我需要处理的文件,然后将并行分派到 运行 这些文件上的相同工作脚本。
我需要在所有工作线程完成后将数据返回到主线程中,而我目前只是写入文件并将它们拉回。 worker 是否可以将他们腌制的内容转储到 STDOUT 上供 master 收集,或者是否有可能两个 worker 可以同时开始写入 STDOUT 并相互交错?
基本上,STDOUT 会阻塞直到另一个程序完成吗?
在 shell 环境中,在后台启动各种作业,全部写入 [=10=],很有可能交错输出,因为 stdout
没有锁定.
但是,GNU Parallel 可以重定向 stdout
它启动的各种作业并防止这种交错。有几个 commmand line switches 和各种选项。
默认情况下输出分组:
--group
Group output. Output from each jobs is grouped together and is only printed when the command is finished. stderr (standard error) first followed by stdout (standard output). This takes some CPU time. In rare situations GNU parallel takes up lots of CPU time and if it is acceptable that the outputs from different commands are mixed together, then disabling grouping with-u
can speedup GNU parallel by a factor of 10.
--group
is the default. Can be reversed with-u
.
但是可以使用其他选项,包括定向到文件。