Comments (4)
Hey,
redirecting the MAD-X output to an arbitrary file handle can be achieved as follows:
from cpymad.madx import Madx
from cpymad import _rpc
import subprocess
import os
def madx_redirect_stdio(stdout=subprocess.STDOUT, stderr=subprocess.STDOUT):
with open(os.devnull, 'r') as devnull:
client, process = _rpc.LibMadxClient.spawn_subprocess(
stdout=stdout,
stderr=stderr,
stdin=devnull,
bufsize=0) # unbuffered IO
return Madx(libmadx=client.libmadx)
# drop all stdio:
devnull = open(os.devnull, 'w')
madx = madx_redirect_stdio(devnull, devnull)
See also the code in MadGUI.
I admit, this is a bit hacky and the documentation is almost nonexisting. Probably its a common demand and should be made easier or at least documented. I'll try to add something as soon as I get some time (currently busy with something else, sorry).
Hope, this helps.
EDIT Sorry, had to correct some minor inconsistencies in the original code.
from cpymad.
I guess I will patch the Madx
constructor so that it accepts and forwards keyword arguments stdout
and stderr
. Hope I get it done by the end of this week.
from cpymad.
Okay, took me a bit longer to find some time to do this. You can now simply do
m = Madx(stdout=False)
# or
with open('log.txt', 'w') as f:
m = Madx(stdout=f)
I uploaded a new release on PyPI. Let me know if you have any problems.
Best regards,
Thomas
from cpymad.
Thanks! That works great for me!
from cpymad.
Related Issues (20)
- Differences in cpymad `table.twiss` and madx `table(twiss, X, X)` when running `use` HOT 7
- Twiss at certain positions HOT 13
- Element redefinition and twiss HOT 5
- Add support to release Linux AArch64 wheels HOT 7
- EMIT module output is displayed with "delay" HOT 2
- TWISS: no beta0 found HOT 1
- New functions
- Can't run madx instance. TypeError HOT 5
- Build error on Win10 Anaconda 2022.5 HOT 11
- What is the preferred way to retrieve the command (string) with which an Element was created? HOT 3
- libmadx error installing on M1/M2 Apple Silicon HOT 7
- Pitfalls on compiling libmadx/cpymad on Linux HOT 5
- Proposal: specialize tables HOT 8
- Wheel for M1 apple? HOT 2
- Python 3.11 Wheels HOT 4
- Error building cpymad on M1 Apple Silicon - "-march=core2" not supported HOT 5
- call does not work when double slash is present in file path HOT 2
- access default beam HOT 1
- ValueError: TypeError: write() argument must be str HOT 4
- Python 3.12 wheels HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cpymad.