Filter
Exclude
Time range
-
Near
CPythonとCFFIの世界を行き来してる呼び出しでは、暗黙のPyObjectのBOX化やアンBOX化は必ず起きる😅 言語間を跨ぐとき型の詰め替え、マーシャリングという動作は起きるので、軽い気持ち1つの呼び出しが何個ものマーシャリングが発生し、それがループ処理内だとバカにならない詰め替えコストが発生する
1
17
mas não precisa de ponteiros pra indicar as outras posições... acho que a sua confusão vem daí. eu falei que é um "bloco contíguo que armazena ponteiros" pq > tudo em python é um ponteiro < pra um PyObject em CPython.
2
2
63
Replying to @tenderizzation
I am really, really curious what the performance for a Tensor type that was solely a PyObject, on free threaded Python, could be. If it is "good enough" I think that would be huge
2
19
1,375
Behind the scenes Python code → tokens → AST → bytecode (.pyc) VM: simple stack-based loop in C Everything = object (PyObject*) Refcount cyclic GC Dynamic typing via ob_type ob_refcnt Dicts (since 3.6): ordered compact GIL: 1 thread at a time (except I/O)
3
96
Replying to @appenz
There was also 3.13 build with no GIL, but agree this is big. Using processes which don't share memory and create additional overhead is not good. It's even interesting to run dense(GPU) sparse(CPU) inference for linear layers with a true multithreading. Previously I have used no GIL with Cython, but it was allowed only not for pure C types not PyObject structure
1
2
3,220
TIL. Python stores booleans with a PyObject header The PyLongObject layout which saves the boolean as a signed integer, so it reserves 28 bytes, a full 224 bits total for a boolean value. on 32-Bit versions its still 24 bytes! WTF python
1
2
31
28 Dec 2025
"pyobject_inject" by @kakt1s2015 - "Executing shellcode directly from a python variable...by getting the variable's memory location with the id() function and then adding 32 bytes of offset to account for the PyObject header" github.com/rkbennett/pyobjec…
21
64
4,641
27 Dec 2025
Replying to @BeatzXBT
Anything that doesn't require pyobject interaction nemequ.github.io/munit/

5
210
27 Nov 2025
Metin2 - Bölüm 7 Tamamlanmamış, yarım kalmış özellikler. -Bu özellik en son benim şahit olduğum kadarıyla 2021de hala çalışıyordu(büyük ihtimal daha yeni fixlenmiştir), güncelde çalışmıyor- Bu bölümde neredeyse arka kapı diyeceğiniz bir özelliğe bakıyoruz. Metin2de grup(party) sistemi aslında çok daha gelişmiş bir şey olacakmış. Grup skilleri olacakmış ve oyuna farklı bir mekanik getirecekmiş. Bu skillerin alt yapısı hazırdı ve yakın zamana kadar çalışıyorlardı. UI'da göstermemeyi tercih etmişler çünkü korece yorum satırlarından da anlayacağımz üzere henüz oturmamış, bitmemiş bir özellikti. ama oyunda server tarafı çalışıyordu ve alt yapısı bulunan 2 adet skill vardı. WARP ve HEAL. Oyunda bunların tutulduğu bir enum var. enum { PARTY_SKILL_HEAL = 1, PARTY_SKILL_WARP = 2 }; Gelen skill için aşağıdaki gibi bir switch-case yapısı var. case PARTY_SKILL_HEAL: ch->GetParty()->HealParty(); break; case PARTY_SKILL_WARP: { LPCHARACTER pch = CHARACTER_MANAGER::instance().Find(p->vid); if (pch) ch->GetParty()->SummonToLeader(pch->GetPlayerID()); else ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<파티> 소환하려는 대상을 찾을 수 없습니다.")); } break; Bu skiller CParty::HealParty() ve CParty::SummonToLeader'da tanımlanıyor. Ve isimden de anlaşılacağı üzere grup üyelerini iyileştirme ve grup liderinin yanına ışınlama işlevleri var. Komiktir ki healı bitirememişler bile. void CParty::HealParty() { // XXX DELETEME 클라이언트 완료될때까지 { return; } if (!m_bPartyHealReady) return; Korece yorum satırının çevirisi, // XXX DELETEME until client completes Çok detaya girmeye gerek yok ne yaptıkları isimlerinden de anlaşılıyor. WARP skiliyle lider kendine oyuncuları çekebiliyor, HEAL da heal atıyor. Summon yeteneğini kullanabilmemiz için liderliğimizin en az 12 olması gerekiyor. Biz yine de M1 ve üstü bir şey kullanacağız yoksa biraz bekleme süresi var. bool CHARACTER::CanSummon(int iLeaderShip) { return (iLeaderShip >= 20 || iLeaderShip >= 12 && m_dwLastDeadTime 180 > get_dword_time()); } Bu skilleri kullanarak lvl sınırı olan bölgelere oyuncular çekilebiliyorlardı. 50lvlde sürgüne girmek veya videoda göstereceğim gibi 31 lvlde kuleye girmek gibi gibi. Hadi bunu test edelim, Bu aksiyonu triggerlayan paket 2 argüman alıyor. Skill indexi ve player idsi. bool SendPartyUseSkillPacket(BYTE bySkillIndex, DWORD dwVID); PyObject* netSendPartyUseSkillPacket(PyObject* poSelf, PyObject* poArgs) { int iSkillIndex; if (!PyTuple_GetInteger(poArgs, 0, &iSkillIndex)) return Py_BuildException(); int iVID; if (!PyTuple_GetInteger(poArgs, 1, &iVID)) return Py_BuildException(); CPythonNetworkStream& rns=CPythonNetworkStream::Instance(); rns.SendPartyUseSkillPacket(iSkillIndex, iVID); return Py_BuildNone(); } Aşağıdaki bloğu oyunda çalıştırırsak bu aksiyonu triggerlayabiliriz import net import player selected_vid = player.GetTargetVID() # sag tikladigimiz insan chat.AppendChat(chat.CHAT_TYPE_INFO, str(selected_vid)) # debug icin yazalim # 73128 other player # 72900 me PARTY_SKILL_WARP = 2 PARTY_SKILL_HEAL = 1 net.SendPartyUseSkillPacket(PARTY_SKILL_WARP, selected_vid) Videoyu izleyebilirsiniz :) Bonus: Healın ve warpın buttonları bile hazırmış. self.buttonDict[localeInfo.PARTY_HEAL_ALL_MEMBER].SetOverVisual("d:/ymir work/ui/game/windows/Party_Skill_Heal_02.sub") Kırmızı ile işaretledim. Üstteki 3 küçük buton heal, alttaki 3 de warp
11
1
146
27,618
Replying to @cordx56
この辺刻々と動いてるので、昔は型ヒントとcythonの型指定の文法も非互換でした。後にcython. int 等の型名を型ヒントに充てるとCのintに翻訳する実装に。Pythonのint指定(PyObject型)は互換性の都合上Cのintにならないそうで…この辺から後は情報無し qiita.com/wrist/items/889696…
1
4
2,291
それで思い出したけど冷静に考えてCPythonのPyObject系譜全部自前実装するより既存のCPythonのコード流用した方が楽だったよな絶対 気が向いたらやろっと
1
11
564
過激派Rustaceanとしては、中身を全部RustにしてPythonバインディングにだけPyObjectを使えばいいと思ってるのだけど、さすがに既存のものを書き換えるのは大変そう
2
8
1,195
特にPythonでは量子回路構築の計算時間が意外とバカにならないという課題感は分かるんだが、解決方法がPyObject*を返すコードをCで書くというのはどうなんだ。。。
1
5
601
17 Aug 2025
Replying to @sharpeye_wnl
ohh i see oop spend some time with these two file object.h and object.c in cpython repo. specially PyObject in object.h (this is foundation of “everything in python in object”.)
2
13
447
25 Jul 2025
Rigorous Python Optimization: AVX2-Accelerated Matrix Multiplication This exposition presents an AVX2-accelerated matrix multiplication using CPython and intrinsics, demanding expertise in SIMD, memory alignment, and PyObject management. Tailored for advanced practitioners, it optimizes numerical workloads for AI and HPC. Verify via Google: “Python AVX2 matrix multiplication.” Share your Python optimization challenge below👇
1
105
25 Jul 2025
Replying to @DavidXu68
python 一开始设计时那种基于 pyobject 引用计数的方式,就没打算应对并行环境。这些年不停的打补丁也是积重难返。放弃旧的 c api 和已有的庞大环境显然不可能,而在今天这种消灭 gil 的变通手段下,明天该抱怨的就是 gc 停顿了。
3
1
33
7,256
Replying to @elecheverriaemi
I don't have to know how the Python VM runs/works in order to write Python. I don't need to know about the GIL, string interning, or what a PyObject looks like. These languages are designed to just be able to write crap and make it run.
1
1
285
Actually Python variables are more like HashMap<String, Arc<RefCell<dyn PyObject>>>
2
104
(流体系の話で難しかったけど、メッシュの種類の話とか、PythonとC を扱うとき、PySideとGUI使いつつ、PyObjectを使うことでC と連携しやすい話だったかな....) #scipydata2025
2
149
内部的な話をするとCPythonのすべてのオブジェクトはPyObjectを継承してるので同じ型なのよね だから配列に全部入れられるの
2
147