(Doug McIlroy)
$ cat data/01.txt | ./bin/tokenize -m models/tokenizer.model | ./bin/parse -m models/parser.model > out/01.parse
out/%.tok : data/%.txt bin/tokenize models/tokenizer.model
cat $< | ./bin/tokenize -m models/tokenizer.model > $@
out/%.parse : out/%.tok bin/parse models/parser.model
cat $< | ./bin/parse -m models/parser.model > $@
Load model | Process |
10s | 3h |
![]() |
|
|||||||||
![]() |
|
|||||||||
![]() |
|
|||||||||
… | … |
out/%.tok : data/%.txt bin/tokenize models/tokenizer.model
cat $< | ./bin/tokenize -m models/tokenizer.model > $@
out/%.parse : out/%.tok bin/parse models/parser.model
cat $< | ./bin/parse -m models/parser.model > $@
# Assuming viasock server wrapping tokenize is listening on tokenizer.socket
out/%.tok : data/%.txt bin/tokenize models/tokenizer.model
cat $< | viasock client tokenizer.socket > $@
# Assuming viasock server wrapping parse is listening on parser.socket
out/%.parse : out/%.tok bin/parse models/parser.model
cat $< | viasock client parser.socket > $@
viasock run
: the Magic Command
$ cat input1.txt | viasock run mytool -m mymodel > output1.txt
$ cat input2.txt | viasock run myothertool > output2.txt
$ cat input3.txt | viasock run mytool -m myothermodel > output3.txt
out/%.tok : data/%.txt bin/tokenize models/tokenizer.model
cat $< | viasock run ./bin/tokenize -m models/tokenizer.model > $@
out/%.parse : out/%.tok bin/parse models/parser.model
cat $< | viasock run ./bin/parse -m models/parser.model > $@
viasock run
Finds the Right ServerExample command:
viasock run --server-timeout 3600 ./bin/parse -m models/parser.model
$SERVERID
= hash of
3600
)./bin/parse
)models/parser.model
)Uses/starts server listening on ./.viasock/sockets/$SERVERID
mytool
or model etc. changesmytool
with different options?mytool
as isviasock run
provides transparent access
mytool
or file arguments changemytool
throughput is too low)mytool
to process 1 record at a time and flush its output buffer after each record