اگر در حال حاضر برای شبیهسازیهای پیچیده بین سرعت جولیا و اکوسیستم پایتون دستوپا میزنید، دیگر نیازی به انتخاب یکی از این دو نیست. حالا میتوانید هر دو زبان را بهصورت همزمان و بدون افت سرعت در یک پروژه به کار بگیرید.
به نقل از مستندات گیتهاب که در ۱۵ سپتامبر ۲۰۲۶ بهروزرسانی شده است، رابطهای متقارن PythonCall و JuliaCall به کاربران اجازه میدهند کدهای یک زبان را در زبان دیگر فراخوانی کنند، در حالی که ساختار نوشتاری (Syntax) هر کدام حفظ شود.
سالها بود که دانشمندان داده مجبور بودند بین کتابخانههای عظیم پایتون و اجرای سریع جولیا یکی را انتخاب کنند. ابزارهای قدیمی مثل PyCall با تبدیلهای پیچیده داده یا کپیهای گرانقیمت در حافظه دستوپنجه نرم میکردند که باعث کند شدن شبیهسازیهای مقیاسبزرگ میشد. این وضعیت شبیه این است که برای انتقال فایلها بین دو اتاق، مجبور باشید از هر فایل یک نسخه کپی بگیرید و به اتاق دیگر ببرید؛ اما حالا انگار دری بین این دو اتاق باز شده است.
همانطور که در تحلیلهای پیشین ما دربارهی بهینهسازی حافظه در زبانهای محاسباتی اشاره کردیم، حذف کپیهای تکراری کلید افزایش بهرهوری است. PythonCall برای بهینهسازی این جریان کاری، سه تغییر فنی اساسی ایجاد کرده است:
- تبدیل بدون کپی (Zero-Copy Conversion): این ابزار بهجای کپی کردن اشیاء، آنها را «بستهبندی» میکند. یعنی اگر یک آرایه از نوع numpy.ndarray را در جولیا تغییر دهید، شیء اصلی در پایتون فوراً بهروز میشود.
- محیطهای ایزوله: این ابزار از CondaPkg استفاده میکند تا وابستگیها را در محیطهای مجزای Conda برای هر پروژه نصب کند و از «جهنم وابستگیها» (Dependency Hell) جلوگیری کند.
- پایداری نوع (Type Stability): سیستم با نگه داشتن نتایج بهصورت اشیاء پایتونی (بهجای تبدیل اجباری به مقادیر جولیا)، دسترسی به متدهای پایتون را سادهتر و سرعت را بیشتر میکند.

در عمل، یک کاربر میتواند مجموعه داده Iris را در جولیا بارگذاری کند، آن را از طریق pytable(df) به یک DataFrame در پانداس تبدیل کند و بلافاصله با Seaborn رسم نماید. برعکس، میتوان دادههای آموزشی را با Numpy در پایتون تولید کرد و آنها را مستقیماً به کتابخانه Flux در جولیا فرستاد تا یک شبکه عصبی (Neural Network) — که شبیه نقشهای از سلولهای کوچک برای انتقال سیگنال از ورودی به جواب است — آموزش ببیند.

طبق گزارش توسعهدهندگان، این تغییر «مالیات عملکرد» در پشتههای چندزبانه را حذف میکند. با حذف تخصیص حافظه تکراری، پژوهشگران میتوانند از سرعت جولیا برای محاسبات سنگین و از کتابخانههای پایتون برای بصریسازی دادهها بدون ایجاد گلوگاه استفاده کنند. این یعنی تبدیل دو زبان مجزا به یک جعبهابزار ترکیبی و واحد.
گام بعدی شما
- مستندات رسمی PythonCall را برای پیکربندی محیطهای CondaPkg مطالعه کنید.
- جریانهای کاری خود را بررسی کنید تا ببینید کدام بخشهای محاسباتی را میتوان به جولیا منتقل کرد.
- عملکرد مدلهای خود را در حالت Zero-Copy با روشهای قدیمی مقایسه کنید.
اما چالش بعدی، نحوه مدیریت این حافظه مشترک در محاسبات توزیعشده روی خوشههای GPU است که در گزارشهای آینده بررسی خواهیم کرد.




گفتگو