2016-03-24 25 views
2

Tüm python dizileri (CPython'da) GIL altındadır.İş parçacığı tarafından oluşturulmuş iş parçacığı da GIL altında python'da mı?

Konu ctypes tarafından oluşturulduysa ne olur? Örneğin, python C Library aracılığıyla aşağıdaki işlevi çağırır ve işlev python değil C alanında bir iş parçacığı oluşturur.

#include<thread> 
int createUnitTestThread(int sasAddr){ 
    sasEngine->thread = new std::thread(....); 
    return 0; 
} 

Aynısı mı var ya da değil mi?

cevap

2

O Python yorumlayıcısı içinde operasyonlar (Python kodu çalıştırmak yürütmek ipler çoğunlukla kenetlenmiş yüzden bu yüzden getirme ve en opcodes yürütme gibi şeyler dahil) olan konu GIL altındadır gibi değil.

C++ iş parçacığınız, Python yorumlayıcısında (Python.h adresinden gelen kullanıcı geri aramaları veya işlevleri) işlevleri geri çağırmıyorsa, çalışır.

+0

Cevabınız için teşekkür ederiz! Bir soru daha, “C++ iş parçacığı”, “GIL” altında olmasa da, hala “python yorumcusu” üzerinde çalışıyor, aynı “PID” ye sahip, değil mi? – SangminKim

+0

Python'u python tarafından yaratılmayan bir iş parçacığından aradığınızda, bir şekilde açıkça kaydettirmediğiniz sürece, Bad Things ™ 'in gerçekleşeceğinden eminim. – o11c

+0

@asleea: Bir iş parçacığı olmak, evet (Linux altında, biraz daha karışıktır çünkü her şey aslında bir görevdir, bu yüzden farklı bir işlem kimliğine sahip olduğunu iddia edebilirsiniz, ama her neyse). –

İlgili konular