LINUX.ORG.RU

Кроссплатформенность Python

 , ,


0

2

Если в винде я создам проект на PyCharm (не используя виндовую фигню типа directx и подобное), то данный Python проект будет одинаково работать и на винде, и на маке, и на линуксе?

Зачем? Например для эмулятора Xbox One - на винде (как минимум) играть в игры Kinect (или его аналоги)

★★★★

В теории да, но на практике могут встретиться платформенные ограничения. Например, вот такие: https://docs.python.org/3/library/select.html

This module provides access to the select() and poll() functions available in most operating systems, devpoll() available on Solaris and derivatives, epoll() available on Linux 2.5+ and kqueue() available on most BSD. Note that on Windows, it only works for sockets; on other operating systems, it also works for other file types (in particular, on Unix, it works on pipes).

Что-то подобное встречается в прочих библиотеках, поэтому внимательно читай документацию к библиотекам, которые будешь использовать.

Если придётся писать куски платформозависимого кода, помни, что у тебя есть https://docs.python.org/3/library/platform.html, который позволит тебе удобненько узнавать, на чём ты запущен.

agentgoblin
()
Ответ на: комментарий от monobogdan1337

Эмулятор Xbox One? На питоне?

Какие-то разрабы зачем-то пилят эмулятор Nintendo Switch на си шарпе - при том, что есть Yuzu.

Что не так с идеей эмулятора Xbox One на питоне?

ConLenov ★★★★
() автор топика
Последнее исправление: ConLenov (всего исправлений: 1)
Ответ на: комментарий от ConLenov

То, что python медленное GC говно, без нормальных биндингов к гапи?) Что ты там выводить то собрался?)

Шарп близок по скорости к нативным языкам, спасибо JIT, и общей ориентированности языка к нативу(например, крутой маршаллинг, возможно напрямую дергать указатели, вместо дрочева манагед массивов есть memcpy, и.т.п).

monobogdan1337
()
Ответ на: комментарий от ConLenov

Ну а игры на юнити как работают по твоему?) Mono еще с нулевых существует, и более того, действительно реализовывает даже WinForms поверх GTK. Есть и .net core.

Есть ещё il2cpp, но это чисто юнитевская штука(до il2cpp юзали mono на ВСЕХ платформах, даже под win).

monobogdan1337
()
Ответ на: комментарий от ConLenov

Если речь именно про игровую направленность - был когда-то фреймворк Xna, на нём писались игры для WP7, Xbox Arcade, и собственно винды. Есть его кроссплатформенный аналог - MonoGame.

monobogdan1337
()
Ответ на: комментарий от monobogdan1337

Питон кроссплатформенный (к тому же многофункциональный), а дотнет долгое время был завязан на винду (я до сих не знаю полностью отвязали от винды)

ConLenov ★★★★
() автор топика
Ответ на: комментарий от ConLenov

Да, конечно, при написании адово ресурсоемкой эмуляции RISC процессора POWER на CISC архитектуре x86_amd64 совершенно не важно, написан эмулятор на интерпретируемом или компилируемом языке программирования.

Это был сарказм, если ты не понял. Это адово важно, разница в производительности между интерпретируемыми или компилируемыми языками мала только на простых задачах.

Нередко ей пренебрегают в пользу простоты портирования. Но это не твой случай, если ты конечно хочешь, чтобы твое ПО могли использовать не только обладатели собственных кластеров.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Хочется, чтобы эмулятор Xbox One был и на x86, и на Arm, и на Windows, и на Linux, и на Android, и на Mac, и на iPad

Оптимальнее Python я не знаю

ConLenov ★★★★
() автор топика
Последнее исправление: ConLenov (всего исправлений: 1)
Ответ на: комментарий от ConLenov

Ты собираешься на дохлом ARM процессоре iPad или Android устройств запускать эмулятор Power процессора на Python? Серьезно? Да просто вычислительной мощности нормально не хватит.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 2)
Ответ на: комментарий от ConLenov

Просто немного фактов, чтобы ты понял, о чём я говорю:

Характеристики PlayStation 3: https://en.wikipedia.org/wiki/PlayStation_3_technical_specifications

Требования эмулятора: https://rpcs3.net/quickstart

И это оптимизированный под x86_amd64 архитектуру эмулятор, написанный на C++, компилируемом языке программирования, и он всё ещё требует на порядок более мощное железо, чем оригинал!

А вот сравнение производительности Python (интерпретируемого языка) и C++: https://history-computer.com/c-vs-python-2/

C++ is anywhere from 10 to 100 times faster than Python

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 3)
Ответ на: комментарий от Vsevolod-linuxoid

эмулятор Power

В Xbox One процессор AMD64 и видеочип от AMD. Xbox One - это компьютер, только для игр

ConLenov ★★★★
() автор топика
Последнее исправление: ConLenov (всего исправлений: 2)
Ответ на: комментарий от ConLenov

new iPad Pro is as powerful as an Xbox One S

Так же. А должен быть мощнее раз в 10. Потери на эмуляцию они такие.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)