Coder Social home page Coder Social logo

Add sub process helpers? about quicli HOT 2 OPEN

killercup avatar killercup commented on June 1, 2024
Add sub process helpers?

from quicli.

Comments (2)

polarathene avatar polarathene commented on June 1, 2024

I've done a Python script(it takes in a bunch of args but doesn't have much interactivity beyond that and outputting information/progress). It would call a third party process for a VFX pipeline process, it'd be helpful catching any output from it like if it spits out an error, when the process exits(but I guess that's sync based logic?), running multiple instances was something I didn't get around to(I just called the script multiple times), that scales up to a certain number of cores(could be all by default, or 3/4th of cores, with user arg, depends on resource usage like RAM required, one of my subprocesses can use up to 60GB due to dataset).

There is a crate called parallel I think that specifically handles the use case of single threaded subprocess being run multiple times, maybe that could be integrated? Ideally I'd want to have them emit some progress information that can be consumed and displayed as total progress information for the actuall process running, alternatively displaying progress bars for each subprocess could be neat too :)

from quicli.

killercup avatar killercup commented on June 1, 2024

I think we can think of "subprocesses" and "running stuff parallel" as two separate things. The following is more about "running stuff parallel".


That seems like a good use-case, @polarathene, and I think using rayon (cf. #4) and std::command::Command/duct can satisfy a lot of your requirements. Let me summarize your use case a bit (correct me if I got it wrong):

  • You start a script with a bunch of parameters
  • Its job is to n processes that do work independent of each other
  • You want to run these processes in parallel
  • You want to capture their output.

I recently wrote this, where files is a bunch of inputs basically, and run starts a process and parses its output:

let res = files.par_iter()
    .map(|path| run(path))
    .reduce(TestResults::default, |a, b| a + b);

You can set RAYON_NUM_THREADS to control this a bit, I wouldn't go for making this configurable by default.

from quicli.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.