<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[הרצת פרוייקט פייתון מnodejs]]></title><description><![CDATA[<p dir="auto">שלום<br />
אני רוצה להפעיל סקריפט פייתון מNODEJS. מה הדרך היעילה לעשות את זה?<br />
יצויין שהפרוייקט זקוק לVENV.<br />
בתור התחלה פחות הכנתי שרשור של פקודות שורת פקודה שנכנסות לתיקיה הנכונה, מפעילים את הVENV ואז מפעילים את הסקריפט, והפעלתי אותם באמצעות child_process.exec. אבל אני חושש שזה מאוד איטי.</p>
<p dir="auto">הכי טוב אם יכולתי איכשהו לקמפל את הפייתון ולהשתמש בפונקציות ממנו כAPI, אבל זה נשמע לי דורש עבודה רצינית.<br />
אם לא, אז אולי יעזור גם לקמפל את הפייתון ולהריץ אותו כEXE, כי נראה לי שמה שלוקח את זהמן זה הפעלת הסביבה הוירטואלית כל פעם. אבל איך מקפלים פייתון שתלוי בVENV?<br />
דרך שלישית שחשבתי היא להפעיל תהליך מNODEJS שמפעיל את הסביבה וירטואלית פעם אחת ואז כל פעם להשתמש באותו תהליך לקרוא לסקריפט, אבל אין לי מושג איך עושים את זה, אם אפשרי.  כל זה בהנחה שמה שגוזל את הזמן זה הפעלת הVENV (מה שבטוח שהסקריפט נטו לוקח הרבה פחות מהפרוצדורה ברוטו, בדקתי)</p>
]]></description><link>https://tchumim.com/topic/13698/הרצת-פרוייקט-פייתון-מnodejs</link><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 13:37:29 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/13698.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Jul 2022 12:19:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Thu, 20 Oct 2022 16:39:55 GMT]]></title><description><![CDATA[<p dir="auto">אני מניח שזה כבר לא רלוונטי, אבל אשים פה קישור מעניין:<br />
<a href="https://pyodide.org/en/stable/usage/index.html#node-js" target="_blank" rel="noopener noreferrer nofollow ugc">https://pyodide.org/en/stable/usage/index.html#node-js</a></p>
]]></description><link>https://tchumim.com/post/146102</link><guid isPermaLink="true">https://tchumim.com/post/146102</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Thu, 20 Oct 2022 16:39:55 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 13:25:30 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> אמר ב<a href="/post/143013">הרצת פרוייקט פייתון מnodejs</a>:</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/davidnead">@<bdi>davidnead</bdi></a> אני לא חושב שזה כל כך בעייתי כמו שאתה מתאר<br />
הכי קל, והדבר שאתה מן הסתם הכי מכיר, זה לעשות שרת flask פשוט ביותר ולשלוח לו את הבקשות דרך localhost</p>
</blockquote>
<p dir="auto">לא רציתי שתגידו לי שרת, רציתי להיפטר מזה... כאיש פולסטאק זה לכאורה המושכל ראשון לתכנה שמאזינה לכמה קריאות במקביל, אבל מעדיף לא להתעסק עם שרת.</p>
<blockquote>
<p dir="auto">מן הסתם יש דרכים קלילים יותר דרך pipe אבל עם סיריאליזציה שתדאג שהבקשות והתשובות לא יתערבבו (אולי לא מתאים, תלוי מה בדיוק הסיטואציה, ומה המקסימום זמן שאורך כל בקשה)</p>
</blockquote>
<p dir="auto">זהו שאני לא מעלה דעתי איך לעשות את הסיראליזציה הזו כמו שצריך, ובכלל לא מכיר את הדרכים הקלילות הללו.</p>
<blockquote>
<p dir="auto"><strong>עריכה:</strong> נראה לי שהכי מתאים לכזה התקשרות בין תהליכים הוא unix domain socket אבל אני לא יודע מה המצב של זה בווינדוס, נראה לי שבעקרון flask יודע להאזין על unix socket, וזה מוריד כל התקורה של TCP/IP</p>
</blockquote>
<p dir="auto">טוב, כאן כבר איבדתי אותך.</p>
]]></description><link>https://tchumim.com/post/143014</link><guid isPermaLink="true">https://tchumim.com/post/143014</guid><dc:creator><![CDATA[davidnead]]></dc:creator><pubDate>Sun, 24 Jul 2022 13:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 13:18:33 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/davidnead">@<bdi>davidnead</bdi></a> אני לא חושב שזה כל כך בעייתי כמו שאתה מתאר<br />
הכי קל, והדבר שאתה מן הסתם הכי מכיר, זה לעשות שרת flask פשוט ביותר ולשלוח לו את הבקשות דרך localhost<br />
מן הסתם יש דרכים קלילים יותר דרך pipe אבל עם סיריאליזציה שתדאג שהבקשות והתשובות לא יתערבבו (אולי לא מתאים, תלוי מה בדיוק הסיטואציה, ומה המקסימום זמן שאורך כל בקשה)<br />
<strong>עריכה:</strong> נראה לי שהכי מתאים לכזה התקשרות בין תהליכים הוא unix domain socket אבל אני לא יודע מה המצב של זה בווינדוס, נראה לי שבעקרון flask יודע להאזין על unix socket, וזה מוריד כל התקורה של TCP/IP<br />
סליחה על כל הקשקושים</p>
]]></description><link>https://tchumim.com/post/143013</link><guid isPermaLink="true">https://tchumim.com/post/143013</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Sun, 24 Jul 2022 13:18:33 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 13:05:28 GMT]]></title><description><![CDATA[<p dir="auto">טוב, זו סתם הייתה טעות שלי בגלל חוסר נסיון בפייתון המלצות שגויות של VSC. ניתן למדוד את משך טעינת הספריות, מדדתי, ואכן זה מה שלוקח את מרבית הזמן.</p>
<p dir="auto">זה עדין מחזיר אותנו לאותה שאלה, כיצד ניתן להפעיל את התליך פעם אחת, ולקרוא כל פעם לפונקיות הנצרכות בלבד.</p>
]]></description><link>https://tchumim.com/post/143012</link><guid isPermaLink="true">https://tchumim.com/post/143012</guid><dc:creator><![CDATA[davidnead]]></dc:creator><pubDate>Sun, 24 Jul 2022 13:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 12:52:26 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> אמר ב<a href="/post/143010">הרצת פרוייקט פייתון מnodejs</a>:</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/davidnead">@<bdi>davidnead</bdi></a> סליחה על ההתווכחות שאולי לא עוזר לך כלל, אבל הבדיקה שעשית לא מצביע על כך שזה בעיית ה-venv אלא שיש תהליך איטי לפני הרצת השורה הראשונה של פייתון שכתבת, זה יכול להיות טעינת ספריות וכדומה</p>
<p dir="auto">בכל מקרה, השאלה שלך עומדת, איך מריצים פייתון מנוד בצורה יעילה</p>
</blockquote>
<p dir="auto">אני לא מתווכח, בחלט יתכן שאתה צודק.<br />
לגבי טעינת ספריות - אכן נתקלתי בבעיה כי אי אפשר לבצע קוד לפני טעינת ספריות אז אין לי דרך למדוד את הזמן שזה לוקח. אולי שם הבעיה.</p>
<p dir="auto">אני מאמין שהדרך (שתפתור גם זה) צריכה לדמות הפעלת פרוייקט פייתון והשארתו פתוח, תוך שיגור קלט ופלט כעין פעולת משתמש.<br />
למעשה זו שאלה כללית בNODEJS כיצד מחזיקים תהליך פתוח ושולחים לו קלט של פקודות כדי לבצע אינטרקציה. זה נשמע לי גם מתכון לצרות אם אתה עובד בצורה אסינכרונית (וברור שכך). יצא מן סלט של לזרוק פקודות לפייתון בלי לדעת באיזה סדר הם הגיעו והרי הפייתון עצמו סינכרוני, להמתין לתשובות ולנסות להבין איזו תשובה הגיעה על מה.</p>
]]></description><link>https://tchumim.com/post/143011</link><guid isPermaLink="true">https://tchumim.com/post/143011</guid><dc:creator><![CDATA[davidnead]]></dc:creator><pubDate>Sun, 24 Jul 2022 12:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 12:46:58 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/davidnead">@<bdi>davidnead</bdi></a> סליחה על ההתווכחות שאולי לא עוזר לך כלל, אבל הבדיקה שעשית לא מצביע על כך שזה בעיית ה-venv אלא שיש תהליך איטי לפני הרצת השורה הראשונה של פייתון שכתבת, זה יכול להיות טעינת ספריות וכדומה</p>
<p dir="auto">בכל מקרה, השאלה שלך עומדת, איך מריצים פייתון מנוד בצורה יעילה</p>
]]></description><link>https://tchumim.com/post/143010</link><guid isPermaLink="true">https://tchumim.com/post/143010</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Sun, 24 Jul 2022 12:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 12:42:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/yossiz">@<bdi>yossiz</bdi></a> אני לא בדיוק יודע. לכאורה אתה צודק. בפועל סקריפט שלוקח בפייתוח פחות משניה לוקח 3 שניות בצורת ההרצה הבאה:</p>
<pre><code>  let cmd = `cd ${pyPath}  &amp;&amp; venv\\scripts\\activate &amp;&amp; python script.py arg1 arg2 `;
  stdout = await exec(cmd);

</code></pre>
<p dir="auto">בדקתי את זה ע"י שעשיתי טיימר פנימי בתוך הפייתון מתחילת עד סוף פעולת הסקריפט והדפסתי אותו לstdout שקראת בJS תוך הפעלת טיימר מקביל בJS.</p>
<p dir="auto">משהו בהרצת הפרוצס בצורה כזו לוקחת זמן. אם זו הפעלת הסביבה וירטואלית? זה רק ניחוש. מה שבטוח שזו דרך מסורבלת, וכנראה יש דרכים טובות יותר.</p>
]]></description><link>https://tchumim.com/post/143009</link><guid isPermaLink="true">https://tchumim.com/post/143009</guid><dc:creator><![CDATA[davidnead]]></dc:creator><pubDate>Sun, 24 Jul 2022 12:42:44 GMT</pubDate></item><item><title><![CDATA[Reply to הרצת פרוייקט פייתון מnodejs on Sun, 24 Jul 2022 12:31:58 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/davidnead">@<bdi>davidnead</bdi></a> אמר ב<a href="/post/143003">הרצת פרוייקט פייתון מnodejs</a>:</p>
<blockquote>
<p dir="auto">הפעלת הסביבה הוירטואלית</p>
</blockquote>
<p dir="auto">כל העבודה של "הפעלת הסביבה הוירטואלית" אאל"ט זה סה"כ מגדיר משתני סביבה?</p>
]]></description><link>https://tchumim.com/post/143006</link><guid isPermaLink="true">https://tchumim.com/post/143006</guid><dc:creator><![CDATA[yossiz]]></dc:creator><pubDate>Sun, 24 Jul 2022 12:31:58 GMT</pubDate></item></channel></rss>