Buckets:
| import{s as me,n as we,o as Me}from"../chunks/scheduler.2b22cead.js";import{S as ue,i as de,e as w,s as l,c as p,h as he,a as M,d as s,b as a,f as ye,g as i,j as A,k as ce,l as je,m as n,n as o,t as r,o as y,p as c}from"../chunks/index.1a0e8013.js";import{C as Je,H as V,E as Te}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.60f09434.js";import{C as se}from"../chunks/CodeBlock.8262a679.js";function Ue(ne){let m,_,S,E,u,G,d,x,h,le="OpenEnv supports both asynchronous and synchronous usage patterns.",X,j,Z,J,ae="<thead><tr><th>Pattern</th> <th>Best For</th> <th>Performance</th></tr></thead> <tbody><tr><td><strong>Async</strong></td> <td>Production, multiple environments, high throughput</td> <td>⚡ Best</td></tr> <tr><td><strong>Sync</strong></td> <td>Scripts, notebooks, quick experiments</td> <td>🐢 Good enough</td></tr></tbody>",z,T,N,U,pe="For simple scripts and notebooks, use the <code>.sync()</code> wrapper:",Y,f,F,$,H,g,ie="For production and parallel environments, use async directly:",K,C,q,I,L,v,oe="Run multiple environments concurrently:",R,b,P,W,D,B,re='<li><a href="rl-integration">RL Framework Integration</a> - Using async with RL training</li> <li><a href="auto-discovery">Auto-Discovery</a> - Discover and load environments</li>',O,k,ee,Q,te;return u=new Je({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),d=new V({props:{title:"Async vs Sync Usage",local:"async-vs-sync-usage",headingTag:"h1"}}),j=new V({props:{title:"When to Use Each",local:"when-to-use-each",headingTag:"h2"}}),T=new V({props:{title:"Sync Usage",local:"sync-usage",headingTag:"h2"}}),f=new se({props:{code:"ZnJvbSUyMG9wZW5lbnYlMjBpbXBvcnQlMjBBdXRvRW52JTBBJTBBZW52JTIwJTNEJTIwQXV0b0Vudi5mcm9tX2VudiglMjJlY2hvJTIyKSUwQSUwQXdpdGglMjBlbnYuc3luYygpJTIwYXMlMjBjbGllbnQlM0ElMEElMjAlMjAlMjAlMjByZXN1bHQlMjAlM0QlMjBjbGllbnQucmVzZXQoKSUwQSUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGNsaWVudC5zdGVwKGFjdGlvbik=",highlighted:`<span class="hljs-keyword">from</span> openenv <span class="hljs-keyword">import</span> AutoEnv | |
| env = AutoEnv.from_env(<span class="hljs-string">"echo"</span>) | |
| <span class="hljs-keyword">with</span> env.sync() <span class="hljs-keyword">as</span> client: | |
| result = client.reset() | |
| result = client.step(action)`,lang:"python",wrap:!1}}),$=new V({props:{title:"Async Usage (Recommended)",local:"async-usage-recommended",headingTag:"h2"}}),C=new se({props:{code:"aW1wb3J0JTIwYXN5bmNpbyUwQWZyb20lMjBvcGVuZW52JTIwaW1wb3J0JTIwQXV0b0VudiUwQSUwQWFzeW5jJTIwZGVmJTIwbWFpbigpJTNBJTBBJTIwJTIwJTIwJTIwZW52JTIwJTNEJTIwQXV0b0Vudi5mcm9tX2VudiglMjJlY2hvJTIyKSUwQSUwQSUyMCUyMCUyMCUyMGFzeW5jJTIwd2l0aCUyMGVudiUyMGFzJTIwY2xpZW50JTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVzdWx0JTIwJTNEJTIwYXdhaXQlMjBjbGllbnQucmVzZXQoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGF3YWl0JTIwY2xpZW50LnN0ZXAoYWN0aW9uKSUwQSUwQWFzeW5jaW8ucnVuKG1haW4oKSk=",highlighted:`<span class="hljs-keyword">import</span> asyncio | |
| <span class="hljs-keyword">from</span> openenv <span class="hljs-keyword">import</span> AutoEnv | |
| <span class="hljs-keyword">async</span> <span class="hljs-keyword">def</span> <span class="hljs-title function_">main</span>(): | |
| env = AutoEnv.from_env(<span class="hljs-string">"echo"</span>) | |
| <span class="hljs-keyword">async</span> <span class="hljs-keyword">with</span> env <span class="hljs-keyword">as</span> client: | |
| result = <span class="hljs-keyword">await</span> client.reset() | |
| result = <span class="hljs-keyword">await</span> client.step(action) | |
| asyncio.run(main())`,lang:"python",wrap:!1}}),I=new V({props:{title:"Parallel Environments",local:"parallel-environments",headingTag:"h2"}}),b=new se({props:{code:"aW1wb3J0JTIwYXN5bmNpbyUwQWZyb20lMjBvcGVuZW52JTIwaW1wb3J0JTIwQXV0b0VudiUwQSUwQWFzeW5jJTIwZGVmJTIwcnVuX2VwaXNvZGUoZW52X25hbWUlM0ElMjBzdHIpJTNBJTBBJTIwJTIwJTIwJTIwZW52JTIwJTNEJTIwQXV0b0Vudi5mcm9tX2VudihlbnZfbmFtZSklMEElMjAlMjAlMjAlMjBhc3luYyUyMHdpdGglMjBlbnYlMjBhcyUyMGNsaWVudCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMGF3YWl0JTIwY2xpZW50LnJlc2V0KCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjAuLi4lMjBydW4lMjBlcGlzb2RlJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwcmVzdWx0JTBBJTBBYXN5bmMlMjBkZWYlMjBtYWluKCklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjBSdW4lMjA0JTIwZW52aXJvbm1lbnRzJTIwaW4lMjBwYXJhbGxlbCUwQSUyMCUyMCUyMCUyMHJlc3VsdHMlMjAlM0QlMjBhd2FpdCUyMGFzeW5jaW8uZ2F0aGVyKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJ1bl9lcGlzb2RlKCUyMmVjaG8lMjIpJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcnVuX2VwaXNvZGUoJTIyZWNobyUyMiklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBydW5fZXBpc29kZSglMjJlY2hvJTIyKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJ1bl9lcGlzb2RlKCUyMmVjaG8lMjIpJTJDJTBBJTIwJTIwJTIwJTIwKSUwQSUwQWFzeW5jaW8ucnVuKG1haW4oKSk=",highlighted:`<span class="hljs-keyword">import</span> asyncio | |
| <span class="hljs-keyword">from</span> openenv <span class="hljs-keyword">import</span> AutoEnv | |
| <span class="hljs-keyword">async</span> <span class="hljs-keyword">def</span> <span class="hljs-title function_">run_episode</span>(<span class="hljs-params">env_name: <span class="hljs-built_in">str</span></span>): | |
| env = AutoEnv.from_env(env_name) | |
| <span class="hljs-keyword">async</span> <span class="hljs-keyword">with</span> env <span class="hljs-keyword">as</span> client: | |
| result = <span class="hljs-keyword">await</span> client.reset() | |
| <span class="hljs-comment"># ... run episode</span> | |
| <span class="hljs-keyword">return</span> result | |
| <span class="hljs-keyword">async</span> <span class="hljs-keyword">def</span> <span class="hljs-title function_">main</span>(): | |
| <span class="hljs-comment"># Run 4 environments in parallel</span> | |
| results = <span class="hljs-keyword">await</span> asyncio.gather( | |
| run_episode(<span class="hljs-string">"echo"</span>), | |
| run_episode(<span class="hljs-string">"echo"</span>), | |
| run_episode(<span class="hljs-string">"echo"</span>), | |
| run_episode(<span class="hljs-string">"echo"</span>), | |
| ) | |
| asyncio.run(main())`,lang:"python",wrap:!1}}),W=new V({props:{title:"Next Steps",local:"next-steps",headingTag:"h2"}}),k=new Te({props:{source:"https://github.com/huggingface/openenv/blob/main/docs/source/guides/async-sync.md"}}),{c(){m=w("meta"),_=l(),S=w("p"),E=l(),p(u.$$.fragment),G=l(),p(d.$$.fragment),x=l(),h=w("p"),h.textContent=le,X=l(),p(j.$$.fragment),Z=l(),J=w("table"),J.innerHTML=ae,z=l(),p(T.$$.fragment),N=l(),U=w("p"),U.innerHTML=pe,Y=l(),p(f.$$.fragment),F=l(),p($.$$.fragment),H=l(),g=w("p"),g.textContent=ie,K=l(),p(C.$$.fragment),q=l(),p(I.$$.fragment),L=l(),v=w("p"),v.textContent=oe,R=l(),p(b.$$.fragment),P=l(),p(W.$$.fragment),D=l(),B=w("ul"),B.innerHTML=re,O=l(),p(k.$$.fragment),ee=l(),Q=w("p"),this.h()},l(e){const t=he("svelte-u9bgzb",document.head);m=M(t,"META",{name:!0,content:!0}),t.forEach(s),_=a(e),S=M(e,"P",{}),ye(S).forEach(s),E=a(e),i(u.$$.fragment,e),G=a(e),i(d.$$.fragment,e),x=a(e),h=M(e,"P",{"data-svelte-h":!0}),A(h)!=="svelte-xqtk7w"&&(h.textContent=le),X=a(e),i(j.$$.fragment,e),Z=a(e),J=M(e,"TABLE",{"data-svelte-h":!0}),A(J)!=="svelte-nrdcrp"&&(J.innerHTML=ae),z=a(e),i(T.$$.fragment,e),N=a(e),U=M(e,"P",{"data-svelte-h":!0}),A(U)!=="svelte-19efo6g"&&(U.innerHTML=pe),Y=a(e),i(f.$$.fragment,e),F=a(e),i($.$$.fragment,e),H=a(e),g=M(e,"P",{"data-svelte-h":!0}),A(g)!=="svelte-xkpb17"&&(g.textContent=ie),K=a(e),i(C.$$.fragment,e),q=a(e),i(I.$$.fragment,e),L=a(e),v=M(e,"P",{"data-svelte-h":!0}),A(v)!=="svelte-6ggl5z"&&(v.textContent=oe),R=a(e),i(b.$$.fragment,e),P=a(e),i(W.$$.fragment,e),D=a(e),B=M(e,"UL",{"data-svelte-h":!0}),A(B)!=="svelte-1qiinh1"&&(B.innerHTML=re),O=a(e),i(k.$$.fragment,e),ee=a(e),Q=M(e,"P",{}),ye(Q).forEach(s),this.h()},h(){ce(m,"name","hf:doc:metadata"),ce(m,"content",fe)},m(e,t){je(document.head,m),n(e,_,t),n(e,S,t),n(e,E,t),o(u,e,t),n(e,G,t),o(d,e,t),n(e,x,t),n(e,h,t),n(e,X,t),o(j,e,t),n(e,Z,t),n(e,J,t),n(e,z,t),o(T,e,t),n(e,N,t),n(e,U,t),n(e,Y,t),o(f,e,t),n(e,F,t),o($,e,t),n(e,H,t),n(e,g,t),n(e,K,t),o(C,e,t),n(e,q,t),o(I,e,t),n(e,L,t),n(e,v,t),n(e,R,t),o(b,e,t),n(e,P,t),o(W,e,t),n(e,D,t),n(e,B,t),n(e,O,t),o(k,e,t),n(e,ee,t),n(e,Q,t),te=!0},p:we,i(e){te||(r(u.$$.fragment,e),r(d.$$.fragment,e),r(j.$$.fragment,e),r(T.$$.fragment,e),r(f.$$.fragment,e),r($.$$.fragment,e),r(C.$$.fragment,e),r(I.$$.fragment,e),r(b.$$.fragment,e),r(W.$$.fragment,e),r(k.$$.fragment,e),te=!0)},o(e){y(u.$$.fragment,e),y(d.$$.fragment,e),y(j.$$.fragment,e),y(T.$$.fragment,e),y(f.$$.fragment,e),y($.$$.fragment,e),y(C.$$.fragment,e),y(I.$$.fragment,e),y(b.$$.fragment,e),y(W.$$.fragment,e),y(k.$$.fragment,e),te=!1},d(e){e&&(s(_),s(S),s(E),s(G),s(x),s(h),s(X),s(Z),s(J),s(z),s(N),s(U),s(Y),s(F),s(H),s(g),s(K),s(q),s(L),s(v),s(R),s(P),s(D),s(B),s(O),s(ee),s(Q)),s(m),c(u,e),c(d,e),c(j,e),c(T,e),c(f,e),c($,e),c(C,e),c(I,e),c(b,e),c(W,e),c(k,e)}}}const fe='{"title":"Async vs Sync Usage","local":"async-vs-sync-usage","sections":[{"title":"When to Use Each","local":"when-to-use-each","sections":[],"depth":2},{"title":"Sync Usage","local":"sync-usage","sections":[],"depth":2},{"title":"Async Usage (Recommended)","local":"async-usage-recommended","sections":[],"depth":2},{"title":"Parallel Environments","local":"parallel-environments","sections":[],"depth":2},{"title":"Next Steps","local":"next-steps","sections":[],"depth":2}],"depth":1}';function $e(ne){return Me(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class be extends ue{constructor(m){super(),de(this,m,$e,Ue,me,{})}}export{be as component}; | |
Xet Storage Details
- Size:
- 9.55 kB
- Xet hash:
- ae469433fd7ee103cc30266a998667f54e6cebd4cbed8bd65c7cb7fc62050762
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.