Bir C++ DLL arayarak bir Python uygulaması tasarlama, benim DLL ve Python 3.4 here arasında benim etkileşimi gönderdiniz. Ama şimdi bir iş parçacığı tabanlı modeli kapsayan akışı içinde bazı işlemi yapmanız gerekmektedir ve benim geri arama işlevi, bir kuyrukta tüm print
ler ve benim akışı bittikten yalnızca içinde, bütün Bilgisi yazdırılır koymak görünüyor.Python 'baskı' ++ tabanlı iş parçacığı modeli
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
print("{}\t{}".format(ConList[i], out_list_item))
return 0
sonraki yollarını kullanmayı denedi, ama hepsi aynı şekilde çalışmaya görünür:
from threading import Lock
print_lock = Lock()
def save_print(*args, **kwargs):
with print_lock:
print (*args, **kwargs)
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
save_print(out_list_item))
return 0
ve:
import sys
def callbackU(OutList, ConList, nB):
for i in range(nB):
a = cast(OutList[i], c_char_p).value
sys.stdout.write(a)
sys.stdout.flush()
return 0
bunu isterim benim geri arama tüm süreç sona erdiğinde değil, çağrıldığında mesajını yazdırır.
yeniden yazmak doğal dilde olduğu gibi, soru, ben bir şey anlayamadık Lütfen! –
Tamam, çünkü ben bir yerli konuşmacı değilim, ama diğer sorumu anlayabiliyorsun? Ya da diğerini daha iyi açıklamalı mıyım? –
OT: neredeyse hiç "diğer sorum" bağlantılarını okur, bunun yerine geçerli özeti eklemek çok daha iyidir. Öte yandan, iyi bilinen konulara veya kaynaklara (ör., Wiki: DAG veya pypi: cffi) bağlanması memnuniyetle karşılanır. –